乐筑天下

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

[编程交流] 隔离顶点

[复制链接]

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-6 06:26:27 | 显示全部楼层 |阅读模式
你好
 
我想编写代码,根据多段线上的两个相反(矩形)顶点执行操作。如果你看到附加图像,我想分离顶点1和10,这两个顶点有什么共同的定义?
 
谢谢
谢伊
072631a96ead2218942jqj.jpg
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 06:50:30 | 显示全部楼层
1和10位于多段线顶点上,而100和101位于多段线线段上
 
出于好奇,也因为你的要求。
 
  1. (defun c:showme (/ pl pts@vertex pts plpts i ip)
  2.      (setq pl (car (entsel "\nSelect Polyline:")))
  3.      (princ "\nSelect point entities")
  4.      (setq pts@vertex (ssadd)
  5.            pts        (ssget '((0 . "POINT"))))
  6.      (setq plpts (mapcar 'cdr
  7.                          (vl-remove-if-not
  8.                                '(lambda (o)
  9.                                       (= (Car o) 10))
  10.                                (entget pl))))
  11.      (repeat (setq i (sslength pts))
  12.            (setq ip (cdr (assoc 10
  13.                                 (entget (setq e    (ssname pts
  14.                                                            (Setq i (1- i)))))))
  15.                  ip (list (car ip) (cadr ip)))
  16.            (if (vl-some
  17.                      '(lambda (p)
  18.                             (if (and (equal (Car p)
  19.                                             (car ip))
  20.                                      (equal (Cadr p)
  21.                                             (cadr ip)))
  22.                                   p))
  23.                      plpts)
  24.                  (ssadd e pts@vertex)))
  25.      (sssetfirst nil pts@vertex)
  26.      (princ)
  27.      )
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-6 06:57:38 | 显示全部楼层
你好
 
我想我误导了你。我的意思是,我想选择一个多边形,并自动定义这些隐藏顶点。这一切都是为了创造re。有没有办法不选择点就确定这些顶点?
 
 
很抱歉
 
 
谢伊
回复

使用道具 举报

7

主题

143

帖子

136

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-6 07:16:43 | 显示全部楼层
对于钢筋图形,创建图形需要执行许多步骤。在这里,就像在你的另一篇文章中一样,你从一个墙部分开始。我个人会从混凝土形状的所有几何形状开始。对于墙,需要每个墙段的标高。通过立面可以显示钢筋的位置和间距。一个部分仅显示表单。
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-6 07:28:27 | 显示全部楼层
我非常高兴地宣布,这次代码完全是我写的,多亏了这里所有伟大的程序员。
 
代码查找我所说的“平方根对”,它意味着在结构中查找列,作为进一步放置结构元素的基础。
 
代码扫描所有选定多段线的顶点并将其附加到一个长列表中,然后将每个顶点与其余顶点进行比较,以找到一对(换句话说,隔离它们)。这一对能够建造一个正方形
 
可配对顶点是:
1、坐标不一致
2、距离远但不超过58个单位(对角线距离40cm×40cm)
3.形成非正交度的点
 
我设法根据这些条件找到配对,但还有很长的路要走。
我知道我写了很长一段时间,很多问题都没有解决。
我很乐意了解如何使其更短、更高效和更安全。
 
(献给您pBe)
 
 
[code](defun C:DEMO(/pl pts sspl tpts i ptlist)(setvar“pdmode 34)(setvar”cmdecho 0)(if(setq sspl(ssget’((0。“LWPOLYLINE”)))(progn(setq i 0)(while(<i(sslength sspl))(setq pts(mapcar‘cdr(vl remove if not’(lambda(e)(=(Car e)10))(entget(ssname sspl i))))(setq i(1+i))(setq tpts(cons pts tpts)))(setq tpts(apply'append tpts))(setq ln(findPairs tpts 58 3));;;(命令行)(第n 0 ln)(第n 1 ln))(princ))(defun findPairs(lst dis ang/ma fe pair)(setq fe 0 ma 0)(while(<ma(length lst))(while(<fe(length lst))(if(not(equal(nth ma lst)(nth fe lst))(if(<(fix(distance(nth ma lst)(nth fe lst)))dis)(if(or(and(>(angle(anth ma lst)(nth fe lst))0.2)(<(angle(nth ma lst)(nth fe lst))。1.4))(和(>(角度)(第N ma lst)(第N fe lst))1.7)(<(角度(第N ma lst)(第N fe lst))3.0)(和(>(角度(第N ma lst)(第N fe lst))3.3)(<(角度(第N ma lst)(第N fe lst))4.5)(和(>(角度(第N ma lst)(第N fe lst))4.9)(<(角度(第N ma lst)(第N fe lst))6.1))(progn(setq对(列表(第N ma lst)(第N fe lst)).)(命令“\u点”“\u非”(第n ma lst)(第n fe lst)))(princ“\n忽略不计”)(princ“\n忽略不计”)(princ“\n忽略不计”)(setq fe(1+fe))_而(
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:27 , Processed in 0.888995 second(s), 65 queries .

© 2020-2025 乐筑天下

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