乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 21|回复: 5

[编程交流] 计算闭合多边形内的块数

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:15:08 | 显示全部楼层 |阅读模式
你好,朋友们
 
我需要一个lisp来计算闭合多段线内的所有块。我不知道写Lisp程序。
任何帮助都将受到高度赞赏
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:38:37 | 显示全部楼层
试试这个:
 
  1. (defun c:Test (/ s sn l i d lst p a b j k)
  2. ;; Tharwat 19.12. 2015 ;;
  3. (princ "\nPick a LWpolyline ...")
  4. (if (setq s (ssget "_+.:S:E" '((0 . "LWPOLYLINE"))))
  5.    (progn (setq l (vlax-curve-getdistatparam
  6.                     (setq sn (ssname s 0))
  7.                     (fix (vlax-curve-getendparam sn))
  8.                   )
  9.                 i (/ l 1000.)
  10.                 d i
  11.           )
  12.           (repeat 1000
  13.             (setq lst (cons (vlax-curve-getpointatdist sn i) lst)
  14.                   i   (+ i d)
  15.             )
  16.           )
  17.           (vla-getboundingbox (vlax-ename->vla-object sn) 'j 'k)
  18.           (if (and j k)
  19.             (progn
  20.               (vla-ZoomWindow
  21.                 (vlax-get-acad-object)
  22.                 j
  23.                 k
  24.               )
  25.               (sssetfirst nil (ssget "_CP" lst '((0 . "INSERT"))))
  26.             )
  27.           )
  28.    )
  29. )
  30. (princ)
  31. )(vl-load-com)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:50:55 | 显示全部楼层
Tharwat a alternative ssget“wp”lst I use a library function for the pline cords make lst then as per your code check for insert。在另一种ssget“wp”lst中,我使用库函数来制作pline跳线,然后根据您的代码检查插入。
 
2年前有一篇文章是关于普林的《寻找一切》。
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:53:37 | 显示全部楼层
此lisp选择多段线内的所有块,而不是计数块。但我找到了我想要的lisp。谢谢大家
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 19:07:07 | 显示全部楼层
选择块后,只需按Ctrl+1或按以下方式进行替换:
 
替换此:
 
  1. (sssetfirst nil (ssget "_CP" lst '((0 . "INSERT"))))
  1. (if (setq ss (ssget "_CP" lst '((0 . "INSERT"))))
  2. (princ (strcat "\nNumber of Blocks: [ " (itoa (sslength ss)) " ]."))
  3. )
并定位变量“ss”
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:20:23 | 显示全部楼层
或者您可以使用此实用程序自动量化选择。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 19:37 , Processed in 0.681841 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表