Bikey_4 发表于 2022-7-5 17:32:33

通过单击获取多段线区域

你好,
 
 
我有一个LisP文件,可以帮助我获得闭合多段线的面积值,并将其分配给文本。它需要在内部拾取一个点,然后围绕拾取的点创建最近的多段线。
但是,我的图形已经有一些多段线,我想通过单击多段线本身来获得它们的面积。
不幸的是,我对LisP一无所知。希望你们能帮我解决这个问题。
Thx太多了!
(详见附件)
DTICH。LSP

satishrajdev 发表于 2022-7-5 17:54:32

(defun c:test ( / a b c)
(if (setq a (ssget '((0 . "*polyline"))))
   (progn
   (setq b 0)
   (repeat (setq i (sslength a))
(setq b
       (+ (vla-get-area
             (vlax-ename->vla-object (ssname a (setq i (1- i))))
             )
             b
       )
)
   )
   (setq c (strcat "\nComponent Area : " (rtos b 2 5)))
   (alert c)
   (prompt c)
   )
)
(princ)
)

Bikey_4 发表于 2022-7-5 18:02:54

似乎您的LisP用于获取多段线的面积之和。有没有关于分隔多段线的想法?
谢谢你的评论!

satishrajdev 发表于 2022-7-5 18:19:03

您可以在此时选择其他选项

satishrajdev 发表于 2022-7-5 18:23:29

这一条用多段线起点处的区域标记文本。
(defun c:测试(/a b c)(vl load com)(if(setq a(ssget’((0.*多段线)))(repeat(setq i(sslength a))(setq b(vlax ename->vla object(ssname a(setq i(1-i))))(setq c(vlax get b‘坐标))(command.text“c”“\u non”(list(car c)(cadr c))50;

BIGAL 发表于 2022-7-5 18:36:42

另一种方法是仍然使用bpoly获取其区域,然后擦除最后一个并写入文本。我认为GP的代码有一个出色的区域例程,它可以计算出文本位置的区域中心。
页: [1]
查看完整版本: 通过单击获取多段线区域