Jump to content

All Activity

This stream auto-updates

  1. Past hour
  2. SLW210

    annotative text/leaders

    I didn't test @Paul Li's codes, but there is... Annotative text conversion - AutoLISP, Visual LISP & DCL - AutoCAD Forums
  3. I wonder if exporting the Attribute Values to Excel, then back into the new titleblock would be better? @Lee Mac has Update Titleblock Attributes | Lee Mac Programming and @ziele_o2k has... Export Title Blocks to CSV for Lee's Update Title Block - AutoLISP, Visual LISP & DCL - AutoCAD Forums
  4. Technically that's an Express Tool, there used to be several other similar LISPs around as well, there might be one that can do as you wish. In the meantime, just type Multiple, when prompted for the command enter MOCORO, it will stay active after you exit.
  5. The MOCORO command is pretty useful at times. It combines the move, copy, rotate and scale commands into one. Handy if you want to use two or more of these commands on a single object. It would be better if you could change your selection without breaking the command or if it had a reference option for rotate and scale.
  6. Today
  7. I don't seem to have this problem these days but I would think it's just something you need to solve by trial and error until you get the result you desire. I'm sure you're aware of the 'scale lineweights' option in the plot settings which may help but I haven't experimented with this. I rarely set a layer to anything other than the default lineweight (0.25mm), nor do I use custom plot styles, preferring to use acad/lt.ctb instead. For polylines I always set a global thickness and for the symbols (blocks) I create I usually set all object lineweights within it to 0.00mm as they are fairly detailed and most often used at a small scale, using a higher setting will likely blur that detail.
  8. Paul Li

    annotative text/leaders

    Straight out of ChatGPT providing both No & Yes versions MldAnoY.lsp MldAnoN.lsp
  9. I was considering a situation where a mechanical component is imported from another CAD platform as a collection of curves and splines rather than clean lines, arcs, and polylines. The geometry may look correct, but small deviations can cause problems when creating toolpaths, measuring profiles, or preparing manufacturing drawings. Converting everything into polylines with a fixed tolerance can also distort critical curves. How do you decide the right curve-fitting tolerance when converting imported geometry? Do you preserve the original splines, approximate them with arcs, or use another approach to maintain manufacturing accuracy?
  10. Hi all, I've been looking into finding a way to change annotative text multileaders from yes to no via lisp and i've had no luck. does anybody know if its possible? not sure why its so difficult. i want to be able to remove (not to delete just change from yes to no) all objects with annotative text from a drawing including nested objects. (im running full version autocad 2026)
  11. Try using `REGION` and `INTERSECT` to check for collisions as you rotate and slide the box through the opening. This method is more accurate than using a circle. The `REGION` command helps define the shape of the box and `INTERSECT` checks if it overlaps with the opening. It gives results because it follows the exact shape of box instead of relying on a circle that might be too big or too small. You can test this by moving the box and checking for collisions at each step. It works well when the box is, at odd angles. Just make sure the box and the opening are properly defined as regions.
  12. @Discus84 I have found that when creating geometry to be used with the parametric feature it is best not to create any lines or polylines orthogonal to the world. E.g., Create you box somewhat rotated and then it's clearer what constraints you need, both dimensional and geometric constraints.
  13. It works as expected...I'm running Autocad clone now and it's hard to get the constraint definitions but this certainly works ! Thanks
  14. Yesterday
  15. Lee Mac

    Dynamic variables

    A contrived exercise to demonstrate the performance considerations: (defun foo1 ( lst ) (vl-sort lst (function (lambda ( s1 s2 ) (compare (splitstr s1) (splitstr s2)) ) ) ) ) (defun foo2 ( lst ) (mapcar '(lambda ( n ) (nth n lst)) (vl-sort-i (mapcar 'splitstr lst) 'compare) ) ) (defun compare ( l1 l2 / x y ) (while (and l1 l2 (= (setq x (car l1)) (setq y (car l2)))) (setq l1 (cdr l1) l2 (cdr l2) ) ) (cond ( (null l1)) ( (null l2) nil) ( (and (numberp x) (numberp y)) (< x y) ) ( (numberp x)) ( (numberp y) nil) ( (< (strcase x) (strcase y))) ) ) (defun splitstr ( str ) (read (strcat "(" (vl-list->string (apply 'append (mapcar (function (lambda ( a ) (if (< 47 a 58) (list a) (list 34 a 34) ) ) ) (vl-string->list str) ) ) ) ")" ) ) ) _$ (setq mylist (makelist 100)) ("byo547swd" "niq983ocu" "aca823vdk" "wtq568rur" "phi902niq" "bjh526uzd" "rji359jxn" "qqv937rwf" "tug083pja" "gad189ena" "lte537pir" "laa124lqe" "pjd997nvz" "opt105nif" "lbg559zsq" "tpj226ohq" "jdo941odr" "pyl665lro" "hoi547oxb" "tke599mge" "tqm797yrt" "dlm480ido" "jlt529gio" "dtl751rtz" "lpi310zks" "rit617cpr" "qdf999kec" "lkz260ohj" "xlg106fuk" "dqj592rbs" "rza409lss" "phx280fll" "rft924rac" "xrt327nir" "mil320zdh" "sec951fzz" "hng963son" "bhm360nws" "whv768vre" "sub738cgn" "udp152qpy" "bfv499vpg" "bef375dxu" "sne299abt" "jwg218naf" "kul046lji" "opm274fep" "xqb135wrk" "vug239ccx" "yvk063bnl" "cca701lfg" "upy690bri" "nsj806ovt" "igt413wky" "ftw622pra" "jsm813cre" "fnd378khc" "utk011unn" "hkm488zlv" "naw752kdp" "gze062nrv" "ytt910gzi" "eeq942uez" "rbm719yzv" "adu204kgv" "voo553bzq" "qah335lvg" "oky453mna" "bye070dci" "uwt849qig" "nkg662cbj" "koy546cve" "fgp548fhm" "hxm087okh" "atb056yvr" "jxz680bdn" "ofc383clx" "ran801jgt" "dai951aut" "muc372eji" "dmv843wdj" "mwl251acq" "skn266edb" "stz033eih" "qbm300sjp" "tax196nfk" "uix079eqf" "evl716cui" "tjl236dov" "mod149kqp" "cai814mxb" "yyf245cfk" "occ503uit" "csd182gul" "jgs728fmy" "hga698aqi" "hfk752ize" "vra872olq" "bjm266zaq" "zva674kji") _$ (foo1 mylist) ("aca823vdk" "adu204kgv" "atb056yvr" "bef375dxu" "bfv499vpg" "bhm360nws" "bjh526uzd" "bjm266zaq" "bye070dci" "byo547swd" "cai814mxb" "cca701lfg" "csd182gul" "dai951aut" "dlm480ido" "dmv843wdj" "dqj592rbs" "dtl751rtz" "eeq942uez" "evl716cui" "fgp548fhm" "fnd378khc" "ftw622pra" "gad189ena" "gze062nrv" "hfk752ize" "hga698aqi" "hkm488zlv" "hng963son" "hoi547oxb" "hxm087okh" "igt413wky" "jdo941odr" "jgs728fmy" "jlt529gio" "jsm813cre" "jwg218naf" "jxz680bdn" "koy546cve" "kul046lji" "laa124lqe" "lbg559zsq" "lkz260ohj" "lpi310zks" "lte537pir" "mil320zdh" "mod149kqp" "muc372eji" "mwl251acq" "naw752kdp" "niq983ocu" "nkg662cbj" "nsj806ovt" "occ503uit" "ofc383clx" "oky453mna" "opm274fep" "opt105nif" "phi902niq" "phx280fll" "pjd997nvz" "pyl665lro" "qah335lvg" "qbm300sjp" "qdf999kec" "qqv937rwf" "ran801jgt" "rbm719yzv" "rft924rac" "rit617cpr" "rji359jxn" "rza409lss" "sec951fzz" "skn266edb" "sne299abt" "stz033eih" "sub738cgn" "tax196nfk" "tjl236dov" "tke599mge" "tpj226ohq" "tqm797yrt" "tug083pja" "udp152qpy" "uix079eqf" "upy690bri" "utk011unn" "uwt849qig" "voo553bzq" "vra872olq" "vug239ccx" "whv768vre" "wtq568rur" "xlg106fuk" "xqb135wrk" "xrt327nir" "ytt910gzi" "yvk063bnl" "yyf245cfk" "zva674kji") _$ (foo2 mylist) ("aca823vdk" "adu204kgv" "atb056yvr" "bef375dxu" "bfv499vpg" "bhm360nws" "bjh526uzd" "bjm266zaq" "bye070dci" "byo547swd" "cai814mxb" "cca701lfg" "csd182gul" "dai951aut" "dlm480ido" "dmv843wdj" "dqj592rbs" "dtl751rtz" "eeq942uez" "evl716cui" "fgp548fhm" "fnd378khc" "ftw622pra" "gad189ena" "gze062nrv" "hfk752ize" "hga698aqi" "hkm488zlv" "hng963son" "hoi547oxb" "hxm087okh" "igt413wky" "jdo941odr" "jgs728fmy" "jlt529gio" "jsm813cre" "jwg218naf" "jxz680bdn" "koy546cve" "kul046lji" "laa124lqe" "lbg559zsq" "lkz260ohj" "lpi310zks" "lte537pir" "mil320zdh" "mod149kqp" "muc372eji" "mwl251acq" "naw752kdp" "niq983ocu" "nkg662cbj" "nsj806ovt" "occ503uit" "ofc383clx" "oky453mna" "opm274fep" "opt105nif" "phi902niq" "phx280fll" "pjd997nvz" "pyl665lro" "qah335lvg" "qbm300sjp" "qdf999kec" "qqv937rwf" "ran801jgt" "rbm719yzv" "rft924rac" "rit617cpr" "rji359jxn" "rza409lss" "sec951fzz" "skn266edb" "sne299abt" "stz033eih" "sub738cgn" "tax196nfk" "tjl236dov" "tke599mge" "tpj226ohq" "tqm797yrt" "tug083pja" "udp152qpy" "uix079eqf" "upy690bri" "utk011unn" "uwt849qig" "voo553bzq" "vra872olq" "vug239ccx" "whv768vre" "wtq568rur" "xlg106fuk" "xqb135wrk" "xrt327nir" "ytt910gzi" "yvk063bnl" "yyf245cfk" "zva674kji") _$ (equal (foo1 mylist) (foo2 mylist)) T _$ (benchmark '((foo1 mylist) (foo2 mylist))) Benchmarking ..........Elapsed milliseconds / relative speed for 128 iteration(s): (FOO2 MYLIST).....1953 / 4.84 <fastest> (FOO1 MYLIST).....9453 / 1.00 <slowest>
  16. Lee Mac

    Dynamic variables

    If you're worried about the removal of duplicated elements when using (vl-sort), just use (vl-sort-i) to obtain the sorted indices and use them to order the original list - this has been solved/demonstrated many times over and is also typically far more performant when sorting lists for which the sort function would otherwise perform some manipulation of the list elements. _$ (setq mylist '(5 3 6 4 5 3 7 5)) (5 3 6 4 5 3 7 5) _$ (vl-sort mylist '<) (3 4 5 6 7) _$ (mapcar '(lambda ( n ) (nth n mylist)) (vl-sort-i mylist '<)) (3 3 4 5 5 5 6 7)
  17. BIGAL

    Center mark replacement

    ZOMBIEKiILLER by Gilecad trying to remember converts proxy objects. Pretty sure link was here. Acad and Bricscad versions. Found "Simply search and download zombiekiller from app.autodesk.com this will delete all the proxy information in the drawing." Have you downloaded the show proxy objects patch from Autodesk ? 2000I may be a problem.
  18. Did something similar for vehicle driveway checking, just a maybe make the box like 2mm smaller than true size and position and rotate, use intersectwith to see if the box and walls touch you will get nil if they dont.touch. Say stop when get points.
  19. BIGAL

    Dynamic variables

    This was created by Copilot, limited testing. and only sorts on single item. (defun BubblePass (lst / a b) (cond ((or (null lst) (null (cdr lst))) lst) ((> (car lst) (cadr lst)) (cons (cadr lst) (BubblePass (cons (car lst) (cddr lst))))) (t (cons (car lst) (BubblePass (cdr lst)))) ) ) (defun BubbleSort (lst / i) (repeat (length lst) (setq lst (BubblePass lst)) ) lst ) Asked about sort on 1st 2 items in list (defun QSORT2 (lst / pivot) (defun _less (a b) (or (< (car a) (car b)) (and (= (car a) (car b)) (< (cadr a) (cadr b))))) (if (cdr lst) (progn (setq pivot (car lst)) (append (QSORT2 (vl-remove-if-not '(lambda (x) (_less x pivot)) (cdr lst))) (list pivot) (QSORT2 (vl-remove-if-not '(lambda (x) (not (_less x pivot))) (cdr lst))) ) ) lst ) ) Limited testing.
  20. rlx

    Center mark replacement

    Yeah lisp is a little on the background right now , wife has some serious health issues so my attention lies elsewhere at this moment. The 'good' news is I'm running out of work this month so next month I have a lot of spare time. Will do some reading and maybe / probably some lisping too.
  21. @Discus84 Your question reminded me of the time my son asked me if I could determine if the couch he was planning to buy would fit in the frieght elevator of his aprtment building. There are several way to solove this problem. 1. Make multiple copies of the red box at different angles and then position them with object snap against the walls and floor. 2. Use the paramteric feature of AutoCAD to create and constrain the wall and the box. The following image shows only the angle contraint of the box. Tangency to the wall and floor is made via a dimensional contraint. Here's the result of changing the box angle. The following shows the dimensional and geometric constraints. Note, d3 constrains the box to be flush with the back wall and d9 with the floor. You can edit the dimensions in the attached file to meet yout requirements. box fit.dwg
  22. Steven P

    Dynamic variables

    It mentions this in the help file that "Duplicate elements may be eliminated from the list."
  23. There is a LISP around for that. It doesn't work on DIMDIA/DIMRAD, but can really speed up the work if it's an entire drawing. _dimreassociate, is there a quicker way to do an entire drawing? - AutoCAD 2D Drafting, Object Properties & Interface - AutoCAD Forums I have a few newer versions I have been working on to improve it that I don't think are ready for posting, but maybe I will get back at it soon.
  24. SLW210

    Center mark replacement

    Nice one! I am surprised you had time in your 30 hour day to respond. I did get it to work on most objects in AutoCAD 2000i, I'll try to get it working better when I get a chance, I believe the issue is now mostly my AutoCAD 2026 drawings are showing proxy object warnings when I save them down to AutoCAD 2000 versions, so I might try redrawing the tests.
  25. secon

    Bentley ProSteel for AutoCAD

    In 2026, I purchased Bentley ProSteel on the MicroStation platform. I haven't used it yet. I previously used another software package, but its annual subscription fees were excessively high. I decided to switch to ProSteel because it is available with a perpetual license, and its annual maintenance costs are relatively reasonable. I work independently and also need to use several other software packages, which come with additional costs. I haven't started learning ProSteel yet, so I was wondering if anyone could recommend any good-quality training materials, tutorials, or other resources that would help me learn how to use the software effectively. According to the reseller, I am apparently the only person in my country using ProSteel on the MicroStation platform. Tekla Structures and Advance Steel are much more popular here. However, both use subscription-based licensing models, which is why ProSteel became an attractive alternative for me.
  26. EnM4st3r

    Selecting viewport in a lisp

    okay i just tested CABs version more throughly, it does get the correct amount of viewports, however it seems it does not correctly identify the paperspace viewport. From my testing on TrueViewports.dwg its exluding a wanted viewport and including the papserspace vp. I tested it by printing the object handles of the viewports and compared the handles manually. (defun c:test345 () (mapcar '(lambda (l) (list (car l) (mapcar '(lambda (e) (cdr (assoc 5 (entget e)))) (cadr l)))) (cab_foo nil)) ) (defun cab_foo (on? / get_exc ss result vpl tab exc tmp) ;; Only get vps that are ON if flag is true (defun get_exc (vpe / a b c) (and (setq a (cdr (assoc 330 (entget vpe)))) (setq b (cdr (assoc 340 (entget a)))) (setq c (cdr (assoc 331 (entget b)))) ) c ) (if (setq ss (ssget "x" '((0 . "VIEWPORT")))) (progn (setq vpl (mapcar 'cadr (ssnamex ss))) (setq vpl (mapcar '(lambda (x) (cons x (cdr (assoc 410 (entget x))))) vpl)) (setq vpl (vl-sort vpl '(lambda (e1 e2) (< (cdr e1) (cdr e2))))) (foreach vp vpl (cond ((null tab) (setq tab (cdr vp) exc (get_exc (car vp)) ) ) ((= tab (cdr vp)) (if (and (not (= exc (car vp))) (or (not on?) (zerop (logand 131072 (cdr (assoc 90 (entget (car vp)))))))) (setq tmp (cons (car vp) tmp)) ) ) (t (setq exc (get_exc (car vp)) result (if result (cons (list tab tmp) result) (list (list tab tmp)) ) tab (cdr vp) tmp nil ) ) ) ) (if tmp (setq result (if result (cons (list tab tmp) result) (list (list tab tmp)) ) ) ) ) ) result ) (defun c:gethandle () ;gets the handle of the currently activated viewport (and (not acet-currentviewport-ename) (= (load "acetutil.fas" "fail") "fail") (princ "\nError: couldnt load acetutil.fas") ) (cdr (assoc 5 (entget (acet-currentviewport-ename)))) ) test345 gives me: (("Layout2" ("245" "249" "24E" "263")) ("Layout1" ("233" "238"))) The correct handles would be: Layout1: "259", "238" Layout2: "24E", "263", "249", "268" so maybe the only reliable option is to initialize each layout and look for code 69
  27. Alex Brikulsky

    What Is AutoCAD Used For?

    Spot on. For anyone starting out, realizing just how much AutoCAD handles- from initial layouts to final fabrication docs - is a real eye-opener. Thanks for sharing!
  28. EnM4st3r

    Selecting viewport in a lisp

    i think this is the thread with CABs code. https://www.theswamp.org/index.php?topic=10992.0
  1. Load more activity
×
×
  • Create New...