需要此lisp的帮助
我试图编写一个lisp代码,将维度分为两个维度第一个可以。
但是,第二个仍然是一样的,不会改变到新的点。
(defun c:sd (/ DM1 DM2 ENT1 ENT1NEW ENT2 ENT2NEW EP EP1 EP2 NP NP1 SP SP1 SP2 )
(setq dm1(car (entsel))
ent1 (entget dm1)
sp1 (assoc 13 ent1)
ep1 (assoc 14 ent1)
sp sp1
ep ep1)
(setq np (getpoint "\nPick Seperating point: ")
np1 (cons 14 np))
(setq ent1new (subst np1 ep1 ent1))
(entmod ent1new)
(command "._copybase" np dm1 "")
(command "._pasteclip" np)
(setq dm2(entlast)
ent2 (entget dm2)
sp2 (assoc 13 ent2)
ep2 (assoc 14 ent2))
(setq ent2new (subst np1 sp2 ent2))
(entmod ent2new)
(setq ent2new (subst ep ep2 ent2))
(entmod ent2new)
) 这应该让你开始:
(vl-load-com)
(defun c:DimSplit () (c:DimensionSplit))
(defun c:DimensionSplit (/ ss pt e data s)
(if (and (setq ss (ssget ":S:E:L" '((0 . "DIMENSION"))))
(setq pt (trans (getpoint "\nPick Seperating point: ") 1 0))
)
(progn
(entmod
(subst
(cons 14 pt)
(assoc 14 (setq data (entget (setq e (ssname ss 0)))))
data
)
)
(entupd e)
(setq s (vla-get-scalefactor (vlax-ename->vla-object e)))
(entlast)
(entmake
(list
(cons 0 "DIMENSION")
(cons 100 "AcDbEntity")
(cons 67 0)
(assoc 8 data)
(cons 100 "AcDbDimension")
(assoc 10 data)
(assoc 11 data)
(assoc 70 data)
(assoc 1 data)
(assoc 52 data)
(assoc 53 data)
(assoc 54 data)
(assoc 51 data)
(assoc 210 data)
(assoc 3 data)
(cons 100 "AcDbAlignedDimension")
(cons 13 pt)
(assoc 14 data)
(assoc 15 data)
(assoc 16 data)
(assoc 40 data)
(cons 100 "AcDbRotatedDimension")
)
)
(vla-put-scalefactor (vlax-ename->vla-object (entlast)) s)
)
)
(princ)
)
我删除了你的重复线程。 这个“dim split”例程可能非常棒,添加了一点GrDraw+GrRead,以显示从光标位置垂直于源dim的“虚线”。我愿意在这里做更多的工作,但这将是非常甜蜜的。只是说说而已。
嗨,BlackBox,这个例程不适合垂直维度。
.
我是Tekal用户,尺寸标注采用特殊方式
这个想法来自那里。
见附件
暗淡的拉链
页:
[1]