乐筑天下

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

[编程交流] 地区

[复制链接]

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 17:56:11 | 显示全部楼层 |阅读模式
你好,早上好!
我试图通过在一个封闭区域中“点击”来创建一个对象选择。通常,这是一条多段线。
如果封闭区域由多个物体包围,则应检索哪个物体以进行选择。
这可能吗?
lg。马丁
185614e134a3av3y7a4m43.png
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:00:52 | 显示全部楼层
你好
 
选择位于闭合多段线中的对象后,您会做什么?
回复

使用道具 举报

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 18:04:23 | 显示全部楼层
你好Tharwat!
 
我试着做到以下几点:
 
创建不同的命令组。
然后:
 
1) 通过单击“内部点”创建图案填充。
生产2)Scharffur
3) 注意到内部点击点
笔记
4) 单击点的边界对象。
此固定对象已属于某个组。
 
5) 现在,添加了该组创建的属于选定对象的图案填充
 
 
lg。马丁
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:07:43 | 显示全部楼层
抱歉,这还不够清楚,但要填充区域,必须非常简单,可以使用第一个拾取点作为所需填充的基点来生成该区域。
 
无论如何,这里有一些代码来选择任何闭合对象中的对象:
 
  1. (defun c:test (/ p e o l i d w)
  2. (if (setq e (entlast)
  3.               p (getpoint "\nPick a point in a closed Polyline :")
  4.               )
  5. (progn
  6.    (command "_.-boundary" "_non" p "")
  7.    (if (and (not (= e (setq o (entlast))))
  8.             (eq (cdr (assoc 0 (entget o))) "LWPOLYLINE")
  9.             )
  10.      (progn
  11.        (setq l (vlax-curve-getdistatparam o (vlax-curve-getendparam o))
  12.              i (/ l 250)
  13.              d i
  14.              )
  15.      (repeat 250
  16.        (setq w (cons (vlax-curve-getpointatdist o d) w)
  17.              d (+ d i)
  18.              )
  19.        )
  20.        (entdel o)
  21.        (sssetfirst nil (ssget "_WP" w))
  22.        )
  23.      )
  24.    )
  25. )
  26. (princ)
  27. )
回复

使用道具 举报

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 18:10:47 | 显示全部楼层
你好Tharwat!
 
不幸的是,我无法处理代码。
我试着在一个封闭的区域中点击一下,创建阴影,然后创建一个组
分配。
该组已经有库存。限定图案填充的对象属于此组。
 
 
lg。马丁
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:14:48 | 显示全部楼层
嗨,Martin,
 
因此,在该闭合区域中选择对象后,您想将其分组吗?
回复

使用道具 举报

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 18:15:41 | 显示全部楼层
你好Tharwat!
构成分界的物体属于一个组
我想在这个对象组中添加图案填充
lg。马丁
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 18:20:10 | 显示全部楼层
试试这个:
 
  1. (defun c:test ( / selareabypt p )
  2. (defun selareabypt ( pt / el ss lw i e )
  3.    (vl-load-com)
  4.    (setq el (entlast))
  5.    (setq ss (ssget "_A"
  6.                    (list '(-4 . "<or")
  7.                            '(-4 . "<and")
  8.                              '(0 . "LWPOLYLINE") '(38 . 0.0) '(210 0.0 0.0 1.0)
  9.                            '(-4 . "and>")
  10.                            '(-4 . "<and")
  11.                              '(0 . "POLYLINE") '(10 0.0 0.0 0.0) '(210 0.0 0.0 1.0)
  12.                            '(-4 . "and>")
  13.                            '(-4 . "<and")
  14.                              '(0 . "LINE") '(-4 . "*,*,=") '(10 0.0 0.0 0.0) '(-4 . "*,*,=") '(11 0.0 0.0 0.0)
  15.                            '(-4 . "and>")
  16.                            '(-4 . "<and")
  17.                              '(0 . "ARC") '(-4 . "*,*,=") '(10 0.0 0.0 0.0) '(210 0.0 0.0 1.0)
  18.                            '(-4 . "and>")
  19.                            '(-4 . "<and")
  20.                              '(0 . "CIRCLE") '(-4 . "*,*,=") '(10 0.0 0.0 0.0) '(210 0.0 0.0 1.0)
  21.                            '(-4 . "and>")
  22.                          '(-4 . "or>")
  23.                          (cons 410 (if (= 1 (getvar 'cvport)) (getvar 'ctab) "Model"))
  24.                    )
  25.             )
  26.    )
  27.    (repeat (setq i (sslength ss))
  28.      (setq e (ssname ss (setq i (1- i))))
  29.      (if (eq (cdr (assoc 0 (entget e))) "POLYLINE")
  30.        (if (/= (last (assoc 10 (entget (entnext e)))) 0.0)
  31.          (ssdel e ss)
  32.        )
  33.      )
  34.    )
  35.    (command "_.SELECT" ss "")
  36.    (command "_.-BOUNDARY" "_A" "_B" "_N" "_P" "" "_I" "_Y" "_O" "_P" "" "_non" pt "")
  37.    (setq sss (ssadd))
  38.    (if (not (eq el (entlast)))
  39.      (progn
  40.        (setq lw el)
  41.        (while (setq lw (entnext lw))
  42.          (repeat (setq i (sslength ss))
  43.            (setq e (ssname ss (setq i (1- i))))
  44.            (if (vlax-invoke (vlax-ename->vla-object lw) 'intersectwith (vlax-ename->vla-object e) acextendnone)
  45.              (ssadd e sss)
  46.            )
  47.          )
  48.          (entdel lw)
  49.        )
  50.      )
  51.    )
  52.    sss
  53. )
  54. (setq p (getpoint "\nPick or specify point inside area : "))
  55. (sssetfirst nil (selareabypt p))
  56. (princ)
  57. )
HTH,M.R。
回复

使用道具 举报

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 18:24:19 | 显示全部楼层
你好,Marko
 
几乎正确。
 
如果点位于多段线内,则仅选择它们。
如果点以多个对象为边界,则应查询应选择哪个对象。
 
lg。马丁
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 18:26:57 | 显示全部楼层
Martin,试试这个应该能满足你需要的模型-它现在应该适用于WCS中放置的所有2d曲线类型。。。
 
  1. (defun c:test ( / *error* selareabypt p i sss )
  2. (defun *error* ( msg )
  3.    (if msg
  4.      (prompt msg)
  5.    )
  6.    (princ)
  7. )
  8. (defun selareabypt ( pt / el ss lw i e )
  9.    (vl-load-com)
  10.    (setq el (entlast))
  11.    (setq ss (ssget "_A"
  12.                    (list '(-4 . "<or")
  13.                            '(-4 . "<and")
  14.                              '(0 . "LWPOLYLINE") '(38 . 0.0) '(210 0.0 0.0 1.0)
  15.                            '(-4 . "and>")
  16.                            '(-4 . "<and")
  17.                              '(0 . "POLYLINE") '(10 0.0 0.0 0.0) '(210 0.0 0.0 1.0)
  18.                            '(-4 . "and>")
  19.                            '(-4 . "<and")
  20.                              '(0 . "LINE") '(-4 . "*,*,=") '(10 0.0 0.0 0.0) '(-4 . "*,*,=") '(11 0.0 0.0 0.0)
  21.                            '(-4 . "and>")
  22.                            '(-4 . "<and")
  23.                              '(0 . "ARC") '(-4 . "*,*,=") '(10 0.0 0.0 0.0) '(210 0.0 0.0 1.0)
  24.                            '(-4 . "and>")
  25.                            '(-4 . "<and")
  26.                              '(0 . "CIRCLE") '(-4 . "*,*,=") '(10 0.0 0.0 0.0) '(210 0.0 0.0 1.0)
  27.                            '(-4 . "and>")
  28.                          '(-4 . "or>")
  29.                          (cons 410 (if (= 1 (getvar 'cvport)) (getvar 'ctab) "Model"))
  30.                    )
  31.             )
  32.    )
  33.    (repeat (setq i (sslength ss))
  34.      (setq e (ssname ss (setq i (1- i))))
  35.      (if (eq (cdr (assoc 0 (entget e))) "POLYLINE")
  36.        (if (/= (last (assoc 10 (entget (entnext e)))) 0.0)
  37.          (ssdel e ss)
  38.        )
  39.      )
  40.    )
  41.    (command "_.SELECT" ss "")
  42.    (command "_.-BOUNDARY" "_A" "_B" "_N" "_P" "" "_I" "_Y" "_O" "_P" "" "_non" pt "")
  43.    (setq sss (ssadd))
  44.    (if (not (eq el (entlast)))
  45.      (progn
  46.        (setq lw el)
  47.        (while (setq lw (entnext lw))
  48.          (repeat (setq i (sslength ss))
  49.            (setq e (ssname ss (setq i (1- i))))
  50.            (if (vlax-invoke (vlax-ename->vla-object lw) 'intersectwith (vlax-ename->vla-object e) acextendnone)
  51.              (ssadd e sss)
  52.            )
  53.          )
  54.          (entdel lw)
  55.        )
  56.      )
  57.    )
  58.    sss
  59. )
  60. (setq p (getpoint "\nPick or specify point inside area : "))
  61. (if (eq (sslength (setq sss (selareabypt p))) 1)
  62.    (sssetfirst nil sss)
  63.    (progn
  64.      (prompt "\nENTER FOR NEXT ENTITY...ESC TO KEEP CURRENT SELECTION AND TERMINATE ROUTINE...")
  65.      (textscr)
  66.      (repeat (setq i (sslength sss))
  67.        (sssetfirst nil (ssadd (ssname sss (setq i (1- i)))))
  68.        (while (progn (setq gr (grread nil)) (if (or (equal gr '(2 13)) (equal gr '(2 32))) (setq gr nil) t)))
  69.      )
  70.    )
  71. )
  72. (*error* nil)
  73. )
M.R。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 23:41 , Processed in 0.450039 second(s), 75 queries .

© 2020-2025 乐筑天下

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