All Activity
- Past hour
-
5 CAD Commands That Can Save You More Time Than You Think
Steven P replied to indiancad's topic in AutoCAD 2D Drafting, Object Properties & Interface
Maybe yes, that would work, and in excel just combine any attributes that need to be - formula for that I guess if doing many sheets - Today
-
OpenTrain AI joined the community
-
I may attempt to get it to work with the proxy objects eventually, but for now I will just create drawings in AutoCAD 2000i and get those working first. Maybe using DWG Convert works better? -ExporttoAutoCAD would probably work.
-
I didn't test @Paul Li's codes, but there is... Annotative text conversion - AutoLISP, Visual LISP & DCL - AutoCAD Forums
-
5 CAD Commands That Can Save You More Time Than You Think
SLW210 replied to indiancad's topic in AutoCAD 2D Drafting, Object Properties & Interface
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 -
5 CAD Commands That Can Save You More Time Than You Think
SLW210 replied to indiancad's topic in AutoCAD 2D Drafting, Object Properties & Interface
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 CAD Commands That Can Save You More Time Than You Think
SAFeSTeR replied to indiancad's topic in AutoCAD 2D Drafting, Object Properties & Interface
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. -
Why do plotted lineweights sometimes differ from what you see on screen?
SAFeSTeR replied to indiancad's topic in AutoCAD 2D Drafting, Object Properties & Interface
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. -
leeetoyyjenkens joined the community
-
Paul Li started following annotative text/leaders
-
Straight out of ChatGPT providing both No & Yes versions MldAnoY.lsp MldAnoN.lsp
-
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? -
masterfal started following annotative text/leaders
-
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)
-
Fitting without collision
indiancad replied to Discus84's topic in AutoCAD 2D Drafting, Object Properties & Interface
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. -
Fitting without collision
lrm replied to Discus84's topic in AutoCAD 2D Drafting, Object Properties & Interface
@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. -
Fitting without collision
Discus84 replied to Discus84's topic in AutoCAD 2D Drafting, Object Properties & Interface
It works as expected...I'm running Autocad clone now and it's hard to get the constraint definitions but this certainly works ! Thanks - Yesterday
-
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>
-
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)
-
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.
-
Fitting without collision
BIGAL replied to Discus84's topic in AutoCAD 2D Drafting, Object Properties & Interface
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. -
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.
-
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.
-
lrm started following Fitting without collision
-
Fitting without collision
lrm replied to Discus84's topic in AutoCAD 2D Drafting, Object Properties & Interface
@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 -
Steven P started following Dynamic variables
-
It mentions this in the help file that "Duplicate elements may be eliminated from the list."
-
Dimensions look correct, but lose their connection to geometry
SLW210 replied to indiancad's topic in AutoCAD Drawing Management & Output
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. -
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.
-
ugeticadtu joined the community
-
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.
-
secon joined the community
-
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
