Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 06/28/2022 in all areas

  1. Instead of layering this why don't you make an attributed block that has this as well as sheet number, drawing title etc. Or just change the %.
    2 points
  2. I don't remember where I got this lisp but still is working until now . Credits to the owner / author of the lisp file (defun c:hvpo_help () (prompt "\n\nhvpo Module") (prompt "\n c:hvpo_getXData") (prompt "\n Returns the model space viewport data it has") (prompt "\n associated to it.") (prompt "\n c:hvpo_help") (prompt "\n Displays this help information.") (prompt "\n c:hvpo_ss") (prompt "\n Routine that sets the scale of the drawing") (prompt "\n by selecting a model space view port.") (prompt "\n Will not run without helpers.") (prompt "\n c:hvpo_sync") (prompt "\n Main routine to syncronize viewports in a ") (prompt "\n drawing with a model space viewport object.") (prompt "\n (hvpo:viewPortToggle)") (prompt "\n Routine to toggle the viewport layer when in") (prompt "\n paper space. Will not run without helpers.") (prompt "\n") (princ) ) (defun hvpo:viewPortToggle ( / &vVpLayer &vCurLayer) (if (setq &vVpLayerTest (tblobjname "layer" "1_Vport")) (progn (setq &vVpLayer (entget &vVpLayerTest)) (if (= (cdr (assoc 70 &vVpLayer)) 0) (progn (setq &vCurLayer (getvar "clayer")) (if (= &vCurLayer "1_Vport") (command "-layer" "set" "0" "") ) (hlay:setLayerProperty "1_Vport" "Freeze" "True") (prompt "\n Viewport Off") ) (progn (hlay:setLayerProperty "1_Vport" "Freeze" "False") (vlax-invoke-method (vla-get-activedocument (vlax-get-acad-object)) "Regen" acAllViewports ) (prompt "\n Viewport On") ) ) ) (progn (prompt "\n No viewport Layer") ) ) (princ) ) (defun c:hvpo_sync ( / &vActLayout &vAcadDoc &vLayoutColl &vLayoutList &vCnt &vLayoutObj &vBlockColl &vCnt2 &vBlockObj &vXdType &vXdData &vVpCheck &vCurlayer) (vl-load-com) ;; get all the layouts in the drawing (prompt "\n\nBeginning viewport sync...") (setq &vCurLayer (getvar "clayer")) ;;(hlay:setLayer "0") ;;(hlay:setLayerProperty "1_Vport" "On" "True") ;;(hlay:setLayerProperty "1_Vport" "Lock" "False") ;;(hlay:setLayerProperty "1_Vport" "Freeze" "False") (command "-layer" "s" "0" "") (if(= (tblsearch "layer" "1_Vport_MS") nil) (progn (command "-layer" "m" "1_Vport_MS" "c" 1 "" "p" "n" "" "lt" "continuous" "" "") ) (progn (command "-layer" "s" "1_Vport_MS" "c" 1 "" "p" "n" "" "lt" "continuous" "" "on" "1_Vport_MS" "Thaw" "1_Vport_MS" "unlock" "1_Vport_MS" "") ) ) (setq &vActLayout (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object)))) (setq &vAcadDoc (vla-get-activedocument (vlax-get-acad-object))) (setq &vLayoutColl (vla-get-layouts &vAcadDoc)) (setq &vLayoutList nil) (setq &vCnt 0) (while (<= &vCnt (- (vlax-get-property &vLayoutColl "count") 1)) (setq &vLayoutObj (vlax-invoke-method &vLayoutColl "item" &vCnt)) (prompt (strcat "\n Setting Layout..." (vlax-get-property &vLayoutObj "Name"))) (vla-put-activelayout &vAcadDoc &vLayoutObj) (if (not (= (vlax-get-property &vLayoutObj "name") "Model")) ;; for each viewport in each layout add or update viewports in the modelspace. (progn (setq &vBlockColl (vla-get-block &vLayoutObj)) (prompt "\n getting viewport... ") (setq &vCnt2 0) (while (<= &vCnt2 (- (vlax-get-property &vBlockColl "Count") 1)) (setq &vBlockObj (vlax-invoke-method &vBlockColl "item" &vCnt2)) (if (= (vlax-get-property &vBlockObj "objectname") "AcDbViewport") (progn (prompt (strcat " " (vlax-get-property &vBlockObj "handle"))) (vlax-invoke-method &vBlockObj "GetXData" "" '&vXdType '&vXdData) (setq &vVpCheck (vlax-variant-value (vlax-safearray-get-element &vXdData 16))) (if (and (not (= &vVpCheck 0))(not (= &vVpCheck 1))) (progn (setq &vLayoutList (append &vLayoutList (list (vlax-get-property &vBlockObj "handle")))) (hvpo:vp (vlax-vla-object->ename &vBlockObj)) ) ) ) ) (setq &vCnt2 (+ &vCnt2 1)) ) ) ) (setq &vCnt (+ &vCnt 1)) ) (vla-put-activelayout (vla-get-activedocument (vlax-get-acad-object)) &vActLayout) (prompt "\n back to the acitve layout") ;;(hlay:setLayer &vCurLayer) (command "-layer" "s" &vCurLayer "") (prompt "Complete.") ;; release vl objects (if &vActLayout (vlax-release-object &vActLayout)) (if &vAcadDoc (vlax-release-object &vAcadDoc)) (if &vLayoutColl (vlax-release-object &vLayoutColl)) (if &vLayoutObj (vlax-release-object &vLayoutObj)) (if &vBlockColl (vlax-release-object &vBlockColl)) (if &vBlockObj (vlax-release-object &vBlockObj)) (gc) (princ) ) ;(defun hvpo:cleanup_old_msviewports (layoutList /) ; (setq &vSS1 (ssget "_X" '((-3 ("ViewPortAssociation"))))) ; (setq &vCnt 0) ; (while (<= &vCnt (- (length layoutList) 1)) ; (setq vpHandle "") ; ; ) ;) (defun hvpo:vp (&gEnt / &vEntHandle &vMsVpObj) ;;(setq &vEnt (car (entsel))) (prompt "\n Checking for add or Update") (setq &vEntHandle (cdr (assoc 5 (entget &gEnt)))) ;; search for a block in the drawing with the selected viewports ;; handle associated to the 1001 xdata. (setq &vMsVpObj (hvpo:getViewPortAssociation_MSObject (cdr (assoc 5 (entget &gEnt))))) (if &vMsVpObj (hvpo:updateViewPortAssociation_MSObject &gEnt &vMsVpObj) (hvpo:addViewPortAssociation_MSObject &gEnt) ) ) ;; with a viewport handle, perform a select on all objects in the database ;; that have extended data "ViewPortAssociation" application name associated ;; to them. If an one is found then return that object. If no objects are found ;; then return nil. ;; If more than one is found that means there is a problem. someone has duplicated ;; the viewport entity and if this happens syncronization operations will not work ;; as expected. Remove all entities, delete the block reference from the drawing and ;; return nil. This will allow the resync portion of the program to create a new ;; viewport block for the viewport. (defun hvpo:getViewPortAssociation_MSObject (&gEntHandle / &vObjFnd &vSS1 &vCnt &vEnt &vVlaent &vXdType &vXdData &vTmpHandle &vReturn) (prompt " ... Finding viewport MS object...") (setq &vReturn nil) (setq &vObjFnd 0) (setq &vSS1 (ssget "_X" '((0 . "INSERT")(-3 ("ViewPortAssociation"))))) (if &vSS1 (progn (setq &vCnt 0) (prompt (strcat "\n Stepping into the selection set looking for " (vl-princ-to-string &gEntHandle))) (while (<= &vCnt (- (sslength &vSS1) 1)) (setq &vEnt (ssname &vSS1 &vCnt)) (setq &vVlaent (vlax-ename->vla-object &vEnt)) (vlax-invoke-method &vVlaent "GetXData" "ViewPortAssociation" '&vXdType '&vXdData) (setq &vTmpHandle (vlax-variant-value (nth 1 (vlax-safearray->list &vXdData)))) (prompt ".") (if (= &gEntHandle &vTmpHandle) (progn (setq &vObjFnd (+ &vObjFnd 1)) (setq &vReturn &vEnt) ) ) (setq &vCnt (+ &vCnt 1)) ) (prompt (strcat "\n Selection set count " (vl-princ-to-string (sslength &vSS1)))) (prompt (strcat "\n Number of viewport objects found " (vl-princ-to-string &vObjFnd))) ) (prompt "No entities found") ) (if (>= &vObjFnd 2) (progn (prompt "\n Error... more than one viewport entity found.") (hvpo:deleteViewpPortAssociation_MSObject &gEntHandle) (setq &vReturn nil) ) ) ;; release vl objects (if &vVlaent (vlax-release-object &vVlaent)) &vReturn ) (defun hvpo:deleteViewpPortAssociation_MSObject (&gEntHandle / &vSS1 &vCnt &vEnt &vVlaent &vXdType &vXdData &vTmpHandle &vBlockColl &vBlockObj &vBlockName) (prompt "\n Cleaning outdated or multiple viewport MS objects...") (setq &vSS1 (ssget "_X" '((0 . "INSERT")(-3 ("ViewPortAssociation"))))) (if &vSS1 (progn (setq &vCnt 0) (while (<= &vCnt (- (sslength &vSS1) 1)) (setq &vEnt (ssname &vSS1 &vCnt)) (setq &vVlaent (vlax-ename->vla-object &vEnt)) (vlax-invoke-method &vVlaent "GetXData" "ViewPortAssociation" '&vXdType '&vXdData) (setq &vTmpHandle (vlax-variant-value (nth 1 (vlax-safearray->list &vXdData)))) (if (= &vEntHandle &vTmpHandle)(vlax-invoke-method &vVlaent "Delete")) (setq &vCnt (+ &vCnt 1)) ) ) ) (prompt "\n Removing Block") (setq &vBlockColl (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))) (setq &vCnt 0) (while (<= &vCnt (- (vlax-get-property &vBlockColl "Count") 1)) (setq &vBlockObj (vlax-invoke-method &vBlockColl "item" &vCnt)) ;(prompt (strcat "\n Block: " (vlax-get-property &vBlockObj "name"))) (setq &vBlockName (strcat "ViewPortAssociation_MSObject_" &vEntHandle)) (if (= (vlax-get-property &vBlockObj "Name") &vBlockName) (progn (vlax-invoke-method &vBlockObj "Delete") (prompt "... removed") ) ) (setq &vCnt (+ &vCnt 1)) ) ;; release vl objects (if &vVlaent (vlax-release-object &vVlaent)) (if &vBlockColl (vlax-release-object &vBlockColl)) (if &vBlockObj (vlax-release-object &vBlockObj)) (princ) ) (defun hvpo:updateViewPortAssociation_MSObject (&gVpEnt &gMsBlockObj / &vVlaent &vXdType &vXdData &vBlockObj &vMsVpScale &vMsVpHeight &vMsVpWidth &vBlockObjIns &vVp &vPsVpHeight &vPsVpWidth &vScaleRatio &vVpScale &vAcadDoc) (prompt "\n Updating Viewport Link...") (setq &vAcadDoc (vla-get-activedocument (vlax-get-acad-object))) ;; check to see if the viewport size matches the block entity in ms (setq &vVlaent (vlax-ename->vla-object &gMsBlockObj)) (vlax-invoke-method &vVlaent "GetXData" "ViewPortAssociation" '&vXdType '&vXdData) (setq &vBlockObj (vlax-ename->vla-object &gMsBlockObj)) (if &vXdData (progn (setq &vMsVpScale (vlax-variant-value (vlax-safearray-get-element &vXdData 3))) (setq &vMsVpHeight (vlax-variant-value (vlax-safearray-get-element &vXdData 4))) (setq &vMsVpWidth (vlax-variant-value (vlax-safearray-get-element &vXdData 5))) ) ) (setq &vBlockObjIns (vlax-get-property &vBlockObj "InsertionPoint")) (setq &vVp (vlax-ename->vla-object &gVpEnt)) (setq &vPsVpHeight (vlax-get-property &vVp "height")) (setq &vPsVpWidth (vlax-get-property &vVp "width")) (setq &vScaleRatio (vlax-get-property &vVp "CustomScale")) (setq &vVpScale (/ 1 (vlax-get-property &vVp "CustomScale"))) (prompt (strcat "\n Viewport Scale: " (rtos &vScaleRatio 2) " Width: " (rtos &vPsVpWidth 2) " Height: " (rtos &vPsVpHeight 2))) (prompt (strcat "\n ModelSpa Scale: " (rtos &vMsVpScale 2) " Width: " (rtos &vMsVpWidth 2) " Height: " (rtos &vMsVpHeight 2))) (vlax-put-property &vAcadDoc "MSPACE" "False") (vlax-invoke-method (vlax-get-acad-object) "ZoomExtents") (if (and (= (* &vPsVpHeight &vVpScale) &vMsVpHeight)(= (* &vPsVpWidth &vVpScale) &vMsVpWidth)) (progn ;; if the viewport height and width match then update the viewport view. (vlax-put-property &vVp "DisplayLocked" :vlax-False) (vlax-invoke-method &vVp "Display" :vlax-true) (vlax-put-property &vVp "viewporton" :vlax-true) (vlax-invoke-method &vVp "update") (vlax-put-property &vAcadDoc "MSPACE" "True") (vla-put-activepviewport &vAcadDoc &vVp) (vlax-invoke-method (vlax-get-acad-object) "ZoomCenter" &vBlockObjIns 1) (vlax-put-property &vVp "CustomScale" &vScaleRatio) (vlax-put-property &vAcadDoc "MSPACE" "False") (vlax-put-property &vVp "DisplayLocked" :vlax-True) ) (progn ;; if the viewport height and width dont match then delete the ms viewport and recreate it. (hvpo:deleteViewpPortAssociation_MSObject (vlax-get-property &vVp "handle")) (hvpo:addViewPortAssociation_MSObject &gVpEnt) ) ) ;; release vl objects (if &vAcadDoc (vlax-release-object &vAcadDoc)) (if &vVlaent (vlax-release-object &vVlaent)) (if &vBlockObj (vlax-release-object &vBlockObj)) (if &vVp (vlax-release-object &vVp)) (princ) ) (defun hvpo:addViewPortAssociation_MSObject (&gVpEnt / &vVlaent &vEntHandle &vXdType &vXdData &vCnX &vCnY &vVpScale &vWidth &vHeight &vBlockName &vSS1 &vEnt &vVlaent &vBlockColl &vCnt &vBlockObj &vNewBlock &vX1 &vX2 &vY1 &vY2 &vArrObj &vPts &vCurLayer &vNewLine &vModelSpace &vNewBlockObj &vXdType2 &vXdData2) (prompt "\n Creating Viewport Link...") ;;(setq &vSS1 (ssget "_X" (list (cons 0 "INSERT")(cons 2 &vBlockName)(cons -3 "ViewPortAssocation")))) (setq &vVlaent (vlax-ename->vla-object &gVpEnt)) (setq &vEntHandle (vlax-get-property &vVlaent "Handle")) (vlax-invoke-method &vVlaent "GetXData" "" '&vXdType '&vXdData) (setq &vCnX (vlax-variant-value (vlax-safearray-get-element &vXdData 8))) (setq &vCnY (vlax-variant-value (vlax-safearray-get-element &vXdData 9))) (setq &vVpScale (/ 1 (vlax-get-property &vVlaent "CustomScale"))) (setq &vWidth (* (vlax-get-property &vVlaent "width") &vVpScale)) (setq &vHeight (* (vlax-get-property &vVlaent "height") &vVpScale)) (setq &vBlockName (strcat "ViewPortAssociation_MSObject_" &vEntHandle)) (setq &vSS1 (ssget "_X" (list (cons 0 "INSERT")(cons 2 &vBlockName)))) (if &vSS1 ;; one or more blocks were found with that name (progn ;; delete all objects in the drawin with that name (while (not (= (sslength &vSS1) 0)) (setq &vEnt (ssname &vSS1 0)) (setq &vVlaent (vlax-ename->vla-object &vEnt)) (vlax-invoke-method &vVlaent "Delete") (ssdel &vEnt &vSS1) ) ) ) ;; delete the block definition if it exists. (setq &vBlockColl (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))) (setq &vCnt 0) (while (<= &vCnt (- (vlax-get-property &vBlockColl "Count") 1)) (setq &vBlockObj (vlax-invoke-method &vBlockColl "item" &vCnt)) (if (= (vlax-get-property &vBlockObj "Name") &vBlockName) (progn (vlax-invoke-method &vBlockObj "Delete") ) ) (setq &vCnt (+ &vCnt 1)) ) ;; after removing any blocks with that name then create the new block ;; and add the polyline. (setq &vNewBlock (vlax-invoke-method &vBlockColl "Add" (vlax-3D-point &vCnX &vCnY) &vBlockName)) (setq &vX1 (- &vCnX (* &vWidth 0.5))) (setq &vY1 (- &vCnY (* &vHeight 0.5))) (setq &vX2 (+ &vCnX (* &vWidth 0.5))) (setq &vY2 (+ &vCnY (* &vHeight 0.5))) (setq &vArrObj (vlax-make-safearray vlax-vbdouble '(0 . 7))) (vlax-safearray-put-element &vArrObj 0 &vX1) (vlax-safearray-put-element &vArrObj 1 &vY1) (vlax-safearray-put-element &vArrObj 2 &vX2) (vlax-safearray-put-element &vArrObj 3 &vY1) (vlax-safearray-put-element &vArrObj 4 &vX2) (vlax-safearray-put-element &vArrObj 5 &vY2) (vlax-safearray-put-element &vArrObj 6 &vX1) (vlax-safearray-put-element &vArrObj 7 &vY2) (setq &vPts (vlax-make-variant &vArrObj)) (setq &vCurLayer (getvar "clayer")) ;; temporary layer section. ;;(hlay:setLayer "1_Vport_MS") (if(= (tblsearch "layer" "1_Vport_MS") nil) (command "-layer" "m" "1_Vport_MS" "c" 1 "" "p" "n" "" "lt" "continuous" "" "") (command "-layer" "s" "1_Vport_MS" "c" 1 "" "p" "n" "" "lt" "continuous" "" "") ) (setq &vNewLine (vlax-invoke-method &vNewBlock "AddLightWeightPolyLine" &vPts)) (vlax-put-property &vNewLine "closed" :vlax-true) (setq &vModelSpace (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))) (setq &vNewBlockObj (vlax-invoke-method &vModelSpace "InsertBlock" (vlax-3D-point &vCnX &vCnY) &vBlockName 1.0 1.0 1.0 0.0)) (setq &vXdType nil) (setq &vXdData nil) (setq &vXdType (vlax-make-safearray vlax-vbInteger '(0 . 6))) (vlax-safearray-put-element &vXdType 0 1001) (vlax-safearray-put-element &vXdType 1 1000) (vlax-safearray-put-element &vXdType 2 1002) (vlax-safearray-put-element &vXdType 3 1040) (vlax-safearray-put-element &vXdType 4 1040) (vlax-safearray-put-element &vXdType 5 1040) (vlax-safearray-put-element &vXdType 6 1002) (setq &vXdType2 (vlax-make-variant &vXdType)) (setq &vXdData (vlax-make-safearray vlax-vbVariant '(0 . 6))) (vlax-safearray-put-element &vXdData 0 "ViewPortAssociation") (vlax-safearray-put-element &vXdData 1 &vEntHandle) (vlax-safearray-put-element &vXdData 2 "{") (vlax-safearray-put-element &vXdData 3 &vVpScale) (vlax-safearray-put-element &vXdData 4 &vHeight) (vlax-safearray-put-element &vXdData 5 &vWidth) (vlax-safearray-put-element &vXdData 6 "}") (setq &vXdData2 (vlax-make-variant &vXdData)) (vlax-invoke-method &vNewBlockObj "SetXData" &vXdType2 &vXdData2) (setvar "clayer" &vCurLayer) ;; release vl objects (if &vVlaent (vlax-release-object &vVlaent)) (if &vBlockColl (vlax-release-object &vBlockColl)) (if &vBlockObj (vlax-release-object &vBlockObj)) (if &vNewBlock (vlax-release-object &vNewBlock)) (if &vNewLine (vlax-release-object &vNewLine)) (if &vModelSpace (vlax-release-object &vModelSpace)) (if &vNewBlockObj (vlax-release-object &vNewBlockObj)) (princ) ) (defun c:hvpo_getXData ( / &vEnt &vVlaent &vXdType &vXdData &vCnt &vObj1 &vObj2) (setq &vEnt (car (entsel))) (setq &vVlaent (vlax-ename->vla-object &vEnt)) (vlax-invoke-method &vVlaent "GetXData" "" '&vXdType '&vXdData) (if &vXdType (progn (setq &vXdType (vlax-safearray->list &vXdType)) (setq &vXdData (vlax-safearray->list &vXdData)) (setq &vCnt 0) (while (<= &vCnt (- (length &vXdData) 1)) (setq &vObj1 (nth &vCnt &vXdType)) (setq &vObj2 (nth &vCnt &vXdData)) (cond ((= (vlax-variant-type &vObj2) 5) (prompt (strcat "\n " (itoa &vCnt) " - Type: " (vl-princ-to-string &vObj1) " -- Data: " (vl-princ-to-string (vlax-variant-value &vObj2))))) ((= (vlax-variant-type &vObj2) 8) (prompt (strcat "\n " (itoa &vCnt) " - Type: " (vl-princ-to-string &vObj1) " -- Data: " (vl-princ-to-string (vlax-variant-value &vObj2))))) (prompt (strcat "\n " (itoa &vCnt) " - Type: " (vl-princ-to-string &vObj1) " -- Data: " )) ) (setq &vCnt (+ &vCnt 1)) ) ) (prompt "\n No XData found on selected Item\n") ) ;; release vl objects (if &vVlaent (vlax-release-object &vVlaent)) (princ) ) (defun c:hvpo_ss (/ &vEnt &vVlaent &vXdType &vXdData &vVpScale &vDisc) (setq &vEnt (entsel "Select a Viewport outline:")) (if &vEnt (progn (setq &vEnt (car &vEnt)) (setq &vVlaent (vlax-ename->vla-object &vEnt)) (vlax-invoke-method &vVlaent "GetXData" "ViewPortAssociation" '&vXdType '&vXdData) (if &vXdData (progn (setq &vVpScale (vlax-variant-value (vlax-safearray-get-element &vXdData 3))) (setq &vDisc (hasl:getDiscipline)) (if &vDisc (hgen:setWorkingScale (atoi (rtos &vVpScale 2 0)) &vDisc "ASL_TEXT") (alert "Error getting discipline. Cannot set scale.") ) ) (prompt "\n Object is not a viewport outline") ) ) (prompt "\n No entity selected.") ) ;; release vl objects (if &vVlaent (vlax-release-object &vVlaent)) (princ) ) (prompt "\n\n..Viewport_helper module loaded. To see a list of commands type hvpo_help.") (princ) Just type hvpo_sync in the command line after uploading the lsp file. hope this helps.
    2 points
  3. How about the MATCHPROP command?
    1 point
  4. 1 point
  5. have you tried renaming the block if you cannot purge it? add a prefix/suffix to it so it will not be the same filename as the xref file that you re-attaching.
    1 point
  6. Here is my method for 1 tag as you have both tag name and block name. (setq ent (entget (car (nentsel "\npick a attribute")))) (setq ins (cdr (assoc 10 ent))) (setq tag (cdr (assoc 2 ent))) (setq txt (cdr (assoc 1 ent))) (setq ent2 (entget (ssname (ssget ins) 0))) (setq bname (cdr (assoc 2 ent2))) Maybe use lee's list box, select block, get all tags then select which ones to look for, or use my Multi toggles.lsp tick on ones required. Will do up to about 20 tags. There is a spacer can be removed to get more.Multi toggles.lsp (setq obj (vlax-ename->vla-object (car (entsel "Pick block")))) (setq lst '()) (setq atts (vlax-invoke obj 'Getattributes)) (foreach att atts (setq lst (cons (vla-get-tagstring att) lst)) ) (setq lst (reverse lst)) (setq lst (cons "please choose" lst)) (if (not AH:Toggs)(load "Multi toggles.lsp")) (setq ans (reverse (ah:toggs lst)))
    1 point
  7. Get a copy of Notepad++ a text editor has functions built in that helps when writing lisp's. A lot of us use it.
    1 point
  8. https://www.afralisp.net/ is nice with simple step by step instructions. https://www.cadtutor.net/tutorials/autolisp/quick-start.php also good start but one page. Coming to the forums regularly to see how people problem solve. look for answer from people with high scores. there are multiple ways to code things in lisp. usually it comes down to performance (what runs the fastest) but depending on user preference or other factors one type of code might win out over a faster code. Reading over the functions to understand how to use them. https://help.autodesk.com/view/OARX/2023/ENU/?guid=GUID-4CEE5072-8817-4920-8A2D-7060F5E16547 Welcome and hope to see you around.
    1 point
  9. Create an Attribute inside your dynamic block and use Field in the attribute value
    1 point
×
×
  • Create New...