乐筑天下

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

[编程交流] 塔尔瓦特#039;代码,需要一个smal

[复制链接]

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:04:45 | 显示全部楼层 |阅读模式
检查形状对象,是否闭合?如果未闭合,则绘制一个圆并高亮显示。
 
谢谢塔瓦特的密码。但这段代码有一个错误:对象是闭合的,仍然是一个圆。。。
 
000449s7z7yjd82pudj88e.png
 
  1. (defun c:test (/ _c d s n e l)
  2. ;;    Tharwat 03.May.2014        ;;
  3. (defun _c (e)
  4.    (foreach p (list (vlax-curve-getStartPoint e)
  5.                     (vlax-curve-getEndPoint e)
  6.               )
  7.      (setq d (ssadd (entmakex (list '(0 . "CIRCLE")
  8.                                     (cons 10 p)
  9.                                     (cons 40 4.)
  10.                                     '(62 . 1)
  11.                               )
  12.                     )
  13.                     d
  14.              )
  15.      )
  16.    )
  17. )
  18. (if (setq d (ssadd)
  19.            s (ssget "_:S" '((0 . "*LINE,ARC,ELLIPSE")))
  20.      )
  21.    (repeat (setq n (sslength s))
  22.      (setq e (ssname s (setq n (1- n))))
  23.      (if (eq (cdr (assoc 0 (entget e))) "ELLIPSE")
  24.        (if (not (vlax-curve-isclosed (vlax-ename->vla-object e)))
  25.          (_c e)
  26.        )
  27.        (_c e)
  28.      )
  29.    )
  30. )
  31. (sssetfirst nil d)
  32. (princ)
  33. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:17:47 | 显示全部楼层

 
  1. (defun c:test (/ _c d s n e l)
  2. ;;    Tharwat 11.May.2014        ;;
  3. (defun _c (e)
  4.    (foreach p (list (vlax-curve-getStartPoint e) (vlax-curve-getEndPoint e))
  5.      (setq d (ssadd (entmakex (list '(0 . "CIRCLE") (cons 10 p) (cons 40 4.) '(62 . 1))) d))
  6.    )
  7. )
  8. (if (setq d (ssadd)
  9.            s (ssget "_:S" '((0 . "*LINE,ARC,ELLIPSE")))
  10.      )
  11.    (repeat (setq n (sslength s))
  12.      (setq e (ssname s (setq n (1- n))))
  13.      (if (eq (cdr (assoc 0 (entget e))) "ELLIPSE")
  14.        (if (not (vlax-curve-isclosed (vlax-ename->vla-object e)))
  15.          (_c e)
  16.        )
  17.      )
  18.      (if (wcmatch (cdr (assoc 0 (entget e))) "*POLYLINE")
  19.        (if (not (vlax-curve-isclosed e))
  20.          (_c e)
  21.        )
  22.        (_c e)
  23.      )
  24.    )
  25. )
  26. (sssetfirst nil d)
  27. (princ)
  28. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:30:18 | 显示全部楼层
如果你不详细解释你想要什么,我肯定帮不了你。
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:35:04 | 显示全部楼层
 
使用“线”绘制闭合形状,无需绘制圆。
000450noxj09q290zr206f.png
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 23:44:35 | 显示全部楼层
 
没有闭合“线”这样的实体,您需要绘制多段线或lwpolyline才能正常工作。
 
Tharwat的代码检查封闭实体,正如您在他的代码中看到的那样。
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 23:50:33 | 显示全部楼层
这似乎是一个重复的线程,请包含一个线程的所有相关问题。
 
一条直线有两个点(起点和终点),没有顶点,因此不可能闭合。
 
Tharwat的代码是检查“圆”、“椭圆和*多段线”而不是“线”。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:51:32 | 显示全部楼层
 
实际上,如果您重新读取ssget函数的过滤,则会包括行,因为行字之前的星号意味着包括所有以行字结尾的实体名称。
 
我想OP讨论的是实体的闭合形状,如直线、多段线。。。等等,我们谈论的是具有紧密性质的实体,当然这两个事物之间没有任何共同点。
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:58:13 | 显示全部楼层
我不知道该怎么形容,
 
000452z27p087e7l7iooh5.png
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-6 00:10:17 | 显示全部楼层
 
谢谢Tharwat,你是说你帮不了我?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:35 , Processed in 0.907457 second(s), 73 queries .

© 2020-2025 乐筑天下

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