pol之间的自动距离
我需要一些LISP例程自动编号多边形顶点之间的距离。 为此,我将使用具有适当标注样式的内置QDIM命令(即隐藏箭头、尺寸界线和尺寸线);不要忘记先设置适当的UCS。调用QSELECT后,使用过滤器选择测量特征小于给定值的尺寸,并将其删除。这也将确保结果是关联的。 出于某种奇怪的原因,QDIM似乎无法在AutoCad Map上工作。很遗憾,上面的建议并没有解决这个问题。这个LISP例程将非常有帮助,因为在每个顶点之间放置这些距离需要很长时间。 我不确定它是否与之前的线程类似?距离文本是关联的,因为它实际上是一个没有箭头的维度,看起来像普通的线对象(类似于mircea的想法)
如果只是一段距离?
(defun c:test (/ p l e d var )
(setq l '("CMDECHO" "OSMODE" "DIMTIH" "DIMTOH" "DIMASSOC")
var (mapcar 'getvar l)
) ;_ end of setq
(mapcar 'setvar l '(0 0 0 0 2))
(if (setq e (car (entsel "\nPick polygon.. "))) ;<---LWPOLYLINE
(setq p (mapcar 'cdr (vl-remove-if-not ''((x) (= (car x) 10)) (entget e)))
p (if (= (cdr (assoc 70 (entget e))) 1)
(append p (list (car p) (cadr p)))
p
) ; if
d (mapcar ''((a b) (ppdim a b)) p (cdr p))
) ;_ end of setq
(princ "\nInvalid. ")
) ;_ end of if
(mapcar 'setvar l var)
(princ)
) ;_ end of defun
;little tweak from previous ldim function
;http://www.cadtutor.net/forum/showthread.php?89187-Not-Aligned-Not-Linear-Lengths-but-geometric-or-List-Length
(defun ppdim ( p1 p2 / mp sz )
;hanhphuc 24/10/2014
(setq sz (* 0.05 (distance p1 p2)) mp (mapcar '(lambda (a b) (* 0.5 (+ a b))) p1 p2))
(vl-cmdf "_dimaligned" p1 p2 mp)
('((obj)
(mapcar
'(lambda (a b) (vlax-put obj a b))
'("Arrowhead1Type" "Arrowhead2Type" "extensionlineextend" "extensionlineoffset"
"TextHeight" "TextInside" "VerticalTextPosition" "TextGap"
)
(list 19 19 0. 0. sz 1 1 sz)
)
(vlax-put-property obj 'TextFill :vlax-true)
)
(vlax-ename->vla-object (entlast))
)
) ;_ end of defun
太棒了,它删除了textfill。但我还想删除数字下方的尺寸线。数字应该四舍五入到小数点后2位,每个数字都应该出现在多边形之外。有可能实现这些要求吗?
..
(vlax-put-property obj 'TextFill :vlax-true)
..
该对象实际上是一个维度,它使用当前的dimstyle,
但如果你想移除它,我认为需要爆炸,但它会变得非关联。
如果只是简单地将文本放置在多边形上,可以重新编写新代码,也可以只搜索web 将其添加到(ppdim)子功能中
(defun c:test (/ p l e d var )
(setq l '("CMDECHO" "OSMODE" "DIMTIH" "DIMTOH" "DIMASSOC" "DIMDEC")
var (mapcar 'getvar l)
) ;_ end of setq
(mapcar 'setvar l '(0 0 0 0 2 2))
...
...
HTH,M.R。 太好了,数字下面的那行不再出现了。剩下的唯一一件事是如何使所有数字显示在多边形之外? 在我的Lisp程序中,像autoaldim。lsp,我在www,pdim上找到了。具有此选项的lsp(内部/外部)。。。现在,您必须将已经解释的内容与此pdim结合起来。lsp。。。
'("Arrowhead1Type" "Arrowhead2Type" "extensionlineextend" "extensionlineoffset"
"TextHeight" "TextInside" "VerticalTextPosition" "TextGap"
"DimLine1Suppress" "DimLine2Suppress"
)
(list 19 19 0. 0. sz 1 1 sz 1 1)
HTH公司
您的pdim工作正常,但如果OP不需要尺寸线。
我的2美分:制作独特的“pdim”层。
c:pdim done->分解的“pdim”->ssget all exploded line->(命令“\u erase”ss)
*OP可以选择是否关联
页:
[1]
2