Basomis 发表于 2022-7-5 22:16:33

pol之间的自动距离

我需要一些LISP例程自动编号多边形顶点之间的距离。

MSasu 发表于 2022-7-5 22:26:10

为此,我将使用具有适当标注样式的内置QDIM命令(即隐藏箭头、尺寸界线和尺寸线);不要忘记先设置适当的UCS。调用QSELECT后,使用过滤器选择测量特征小于给定值的尺寸,并将其删除。这也将确保结果是关联的。

Basomis 发表于 2022-7-5 22:28:06

出于某种奇怪的原因,QDIM似乎无法在AutoCad Map上工作。很遗憾,上面的建议并没有解决这个问题。这个LISP例程将非常有帮助,因为在每个顶点之间放置这些距离需要很长时间。

hanhphuc 发表于 2022-7-5 22:33:54

我不确定它是否与之前的线程类似?
 
距离文本是关联的,因为它实际上是一个没有箭头的维度,看起来像普通的线对象(类似于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

Basomis 发表于 2022-7-5 22:38:49

太棒了,它删除了textfill。但我还想删除数字下方的尺寸线。数字应该四舍五入到小数点后2位,每个数字都应该出现在多边形之外。有可能实现这些要求吗?

hanhphuc 发表于 2022-7-5 22:41:49

 
 
 

..
(vlax-put-property obj 'TextFill :vlax-true)
..

 
该对象实际上是一个维度,它使用当前的dimstyle,
但如果你想移除它,我认为需要爆炸,但它会变得非关联。
如果只是简单地将文本放置在多边形上,可以重新编写新代码,也可以只搜索web

Basomis 发表于 2022-7-5 22:47:20

将其添加到(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。

hanhphuc 发表于 2022-7-5 22:53:51

太好了,数字下面的那行不再出现了。剩下的唯一一件事是如何使所有数字显示在多边形之外?

marko_ribar 发表于 2022-7-5 22:56:45

在我的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公司

Basomis 发表于 2022-7-5 23:02:20

 
您的pdim工作正常,但如果OP不需要尺寸线。
我的2美分:制作独特的“pdim”层。
c:pdim done->分解的“pdim”->ssget all exploded line->(命令“\u erase”ss)
 
*OP可以选择是否关联
页: [1] 2
查看完整版本: pol之间的自动距离