haisagiviz Posted May 31, 2019 Posted May 31, 2019 Hello everyone, Please help me a lisp to move all points of dimension to each of dimension line of them. Thank you very much, Regards, Quote
haisagiviz Posted June 3, 2019 Author Posted June 3, 2019 Are you kidding me?? ^.^ I just want to do it by Autolisp not Photoshop skill ^^ Btw your pts skill is so well Thanks. Quote
Roy_043 Posted June 3, 2019 Posted June 3, 2019 (edited) Here is a solution for AcDbAlignedDimension and AcDbRotatedDimension objects (adapted version of code published here). (vl-load-com) (defun KGA_Conv_Pickset_To_EnameList (ss / i ret) (if ss (repeat (setq i (sslength ss)) (setq ret (cons (ssname ss (setq i (1- i))) ret)) ) ) ) (defun KGA_List_LastRemove (lst) (reverse (cdr (reverse lst))) ) ; (PutDefPointsOnDimLine (car (entsel))) (defun PutDefPointsOnDimLine (enm / ang elst nor pt0 pt1 pt2) (setq elst (entget enm)) (if (vl-position '(100 . "AcDbAlignedDimension") elst) (progn (setq nor (cdr (assoc 210 elst))) (setq pt0 (trans (cdr (assoc 10 elst)) 0 nor)) (setq pt1 (append (KGA_List_LastRemove (trans (cdr (assoc 13 elst)) 0 nor)) (cddr pt0))) (setq pt2 (append (KGA_List_LastRemove (trans (cdr (assoc 14 elst)) 0 nor)) (cddr pt0))) (setq ang (if (vl-position '(100 . "AcDbRotatedDimension") elst) (cdr (assoc 50 elst)) (angle pt1 pt2) ) ) ;; For Rotated Dimensions gc 13 and gc 14 must be changed together. (entmod (subst (cons 13 (trans (inters pt0 (polar pt0 ang 1.0) pt1 (polar pt1 (+ ang (* 0.5 pi)) 1.0) nil) nor 0)) (assoc 13 elst) (subst (cons 14 (trans (inters pt0 (polar pt0 ang 1.0) pt2 (polar pt2 (+ ang (* 0.5 pi)) 1.0) nil) nor 0)) (assoc 14 elst) elst ) ) ) T ) ) ) (defun c:Test ( / doc ss) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-endundomark doc) (vla-startundomark doc) (if (setq ss (ssget '((100 . "AcDbAlignedDimension")))) (progn (setvar 'cmdecho 0) (command "_.dimdisassociate" ss "") (setvar 'cmdecho 1) (mapcar 'PutDefPointsOnDimLine (KGA_Conv_Pickset_To_EnameList ss)) ) ) (vla-endundomark doc) (princ) ) Edited June 3, 2019 by Roy_043 Added (vl-load-com) Quote
haisagiviz Posted June 3, 2019 Author Posted June 3, 2019 19 minutes ago, Roy_043 said: Here is a solution for AcDbAlignedDimension and AcDbRotatedDimension objects (adapted version of code published here). Hi Roy, Thank you so much for your help, But it is not working for me. Please confirm by attach image file. Regards, Quote
Roy_043 Posted June 3, 2019 Posted June 3, 2019 I have added (vl-load-com) to the code in my previous post. This is required for AutoCAD, but not for BricsCAD (which I use). Hopefully this will fix your issue. Quote
haisagiviz Posted June 3, 2019 Author Posted June 3, 2019 43 minutes ago, Roy_043 said: I have added (vl-load-com) to the code in my previous post. This is required for AutoCAD, but not for BricsCAD (which I use). Hopefully this will fix your issue. I just try to load vl-load-com but sorry I cannot understand how to load it. Can you explain to me how to load it? I'm using AutoCAD 2019. I'm just using Lisp but not yet made any Lisp myself before. I want to learn how to create Lisp for more performance my workflow. Thanks again. Quote
Roy_043 Posted June 3, 2019 Posted June 3, 2019 I have revised the code. Just copy-paste all of it again. And then load the revised .lsp file. Quote
haisagiviz Posted June 3, 2019 Author Posted June 3, 2019 Thank for your kind. Sorry it also cannot working. Quote
Roy_043 Posted June 3, 2019 Posted June 3, 2019 Try the attached file.PutDefPointsOnDimLine.lsp 1 Quote
haisagiviz Posted June 3, 2019 Author Posted June 3, 2019 @Roy_043 you are amazing! It was working for me. But my Dim have a little problem because I exported the DWG drawing from BIM software (ArchiCAD) and the dimension have a issue need to solve as attached image. BTW it worked as I expected, so thank you very much. I will learn from your lisp. Regards. Quote
haisagiviz Posted June 3, 2019 Author Posted June 3, 2019 Hi @Roy_043 I can solve it by first change to standard dim style and do the Lisp to solve it. I work for me. Thanks P/S: Could you please add to first of lisp. Step 1. Select all of dims with conditions like as - "Ext line 1 or 2" property is Off status. or - By layer or - Selection set by mouse --> I know this request is difficult but it is my big issue for now. Because I don't know how to create lisp with selection dimension with variable conditions like Dimension properties, layer or something like that. I want to learn. BTW thanks very much for your kind. Step 2. Do PutDefPointsOn.lisp to bring dim point to base line (the lisp worked for now) Thank you so so much. Quote
haisagiviz Posted June 13, 2019 Author Posted June 13, 2019 Hi @Roy_043 Could you please help me another request of above lisp? I am looking for a lisp can turn off or move dim point (as your lisp routine above) of the extension line of dimension when overlap other line or polyline object. I want to use ssget to make the selection set before do the lisp routine. Thank for your help. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.