标注放置和块
嘿,我处理了很多需要大量尺寸标注和符号放置的二维图形。下面附上的图片显示了我正在发送的内容以及最终产品的最终结果。我希望从这个过程中去掉很多人为因素,并一直在探索通过lisps实现自动化。以下由Kim Engineering Solutions提供的lisp似乎正是我想要的,唯一的问题是尺寸正好放置在它们对应的线段上。有没有办法编辑代码,将它们从被标注的多段线形状中移出/移出任意距离,例如3”?有一个选项框可以在执行命令时打开,但它似乎没有提供我需要的东西。
;自动标注多段线;-为选定多段线绘制顶点到顶点的尺寸;-为弧段添加弧长。;Stefan M.10.11.2015-适用于KIM项目。com(defun C:AD(/*error*a acdoc b C d dim e fd ht i o p1 p2 p3 pc pm rad sd space ss u opt isLine)(setq acdoc(vla get activedocument(vlax get acad object))space(vlax get acdoc(if(=(getvar'cvport)1)“paperspase”modelspace)dim(getvar'dimstyle)ht(*1.0(getvar'dimstxt)(if(=0(getvar'dimanno))(getvar'dimscale)(/1.0(getvar'cannoscalevalue)))(vla startundomark acDoc)(defun*error*(msg)(和msg(not(wcmatch(strcase msg)“*CANCEL*,*QUIT*,*BREAK*”)(princ(strcat“\naderor:”msg))(vla endundomark acDoc)(princ))(setq opt(mapcar)(lambda(a b)(cond((getdictvar“AD\u otions”a))((setdictvar“AD\u otions”a b))))'(“Linear”“Arc”)'(“b0”“c0”))(initget“Options”)(if(eq(getkword”\n按enter继续或:“”“Options”)(setq opt(AD\u Options opt))(if(setq ss(ssget)(0。“LWPOLYLINE,LINE,Arc”))(repeat(setq i(sslength ss))(setq e(ssname ss(setq i(1-i)))o(vlax ename->vla object e)a(vlax curve getstartparam e)c(vlax curve getendparam e)b nil isLine(wcmatch(vla get Objectname o)“AcDbLine,AcDbArc”)(而( 添加到选项窗口的偏移选项
https://s14.postimg.org/m1ivjrzkd/optins.png
;自动标注多段线;-为选定多段线绘制顶点到顶点的尺寸;-为弧段添加弧长。;Stefan M.10.11.2015-适用于KIM项目。com(defun C:AD(/*error*a acdoc b C d dim e fd ht i o p1 p2 p3 pc pm rad sd space ss u isLine off)(setq acdoc(vla get activedocument(vlax get acad object))space(vlax get acdoc(if(=(getvar'cvport)1)'paperspase'modelspace))dim(getvar'dimstyle);ht(*1.0(getvar'dimtxt)(if(=0(getvar'dimanno))(getvar'dimscale)(/1.0(getvar'cannoscalevalue))))(vla startundomark acDoc)(defun*error*(msg)(和msg(not(wcmatch(strcase msg)”*CANCEL*,*QUIT*,*BREAK*)(princ(strcat“\nADError:“msg”))(vla endundomark acDoc)(princ))(setq opt(mapcar)(lambda(a b)(cond((getdictvar“AD\u otions”a))((setdictvar“AD\u otions”a b))“(“线性”“弧”“偏移”)”(“b0”“c0”“d0”))(setq kopt opt)(initget“Options”)(if(eq(getkword”\n按enter继续或:”“Options”)(setq opt(AD\u Options opt))(setq a3(nth 2 opt))(setq off(*(1+(read(substr a3 2 3)))0.25))(if(setq ss(ssget’((0。“LWPOLYLINE,LINE,ARC”)))(repeat(setq i(sslength ss))(setq e(ssname ss(setq i(1-i)))o(vlax ename->vla object e)a(vlax curve getstartparam e)c(vlax curve getendparam e)b nil isLine(wcmatch(vla get Objectname o)“AcDbLine,AcDbArc”))(而( 嘿,我回复得很晚(刚刚在寒假后重新开始工作),但我真的很感谢你提供的帮助,汉达斯!我花了很长时间试图理解你修改了什么,以及如何将其修改到我的理想状态,但每次我修改文本时都觉得程序无法加载。
有什么方法可以提高的偏移量。25/.5/.75/1到1/3/5/10?此外,有没有简单的方法来调整尺寸放置的位置?看起来所有通常的“水平”维度都被放置在由所选偏移量获取的形式上。同样地,所有的“垂直”维度都会被选择的数量所抵消,但我不明白它是如何选择将它们放在右边还是左边。
我附上了一对图片,“偏移”是我在使用您编辑的程序后目前给出的,而“理想”是我真正希望尺寸结束的地方。也就是说,即使只是提高抵消金额也足以使其可行。再次感谢你已经为我看了这一次,我希望有人可能有可能调整它只是一点点!
嗨,aschiffer,我使用公制单位作为我的国家标准。。我将修改lisp以使其更灵活,并在准备好后将其发回 AD.rar公司
这是更新。。。所有尺寸均为左上方
否则他们都会在右边和下面
确保放置samp5。autocad搜索路径中的dcl
页:
[1]