隔离顶点
你好我想编写代码,根据多段线上的两个相反(矩形)顶点执行操作。如果你看到附加图像,我想分离顶点1和10,这两个顶点有什么共同的定义?
谢谢
谢伊
1和10位于多段线顶点上,而100和101位于多段线线段上
出于好奇,也因为你的要求。
(defun c:showme (/ pl pts@vertex pts plpts i ip)
(setq pl (car (entsel "\nSelect Polyline:")))
(princ "\nSelect point entities")
(setq pts@vertex (ssadd)
pts (ssget '((0 . "POINT"))))
(setq plpts (mapcar 'cdr
(vl-remove-if-not
'(lambda (o)
(= (Car o) 10))
(entget pl))))
(repeat (setq i (sslength pts))
(setq ip (cdr (assoc 10
(entget (setq e (ssname pts
(Setq i (1- i)))))))
ip (list (car ip) (cadr ip)))
(if (vl-some
'(lambda (p)
(if (and (equal (Car p)
(car ip))
(equal (Cadr p)
(cadr ip)))
p))
plpts)
(ssadd e pts@vertex)))
(sssetfirst nil pts@vertex)
(princ)
)
你好
我想我误导了你。我的意思是,我想选择一个多边形,并自动定义这些隐藏顶点。这一切都是为了创造re。有没有办法不选择点就确定这些顶点?
很抱歉
谢伊 对于钢筋图形,创建图形需要执行许多步骤。在这里,就像在你的另一篇文章中一样,你从一个墙部分开始。我个人会从混凝土形状的所有几何形状开始。对于墙,需要每个墙段的标高。通过立面可以显示钢筋的位置和间距。一个部分仅显示表单。 我非常高兴地宣布,这次代码完全是我写的,多亏了这里所有伟大的程序员。
代码查找我所说的“平方根对”,它意味着在结构中查找列,作为进一步放置结构元素的基础。
代码扫描所有选定多段线的顶点并将其附加到一个长列表中,然后将每个顶点与其余顶点进行比较,以找到一对(换句话说,隔离它们)。这一对能够建造一个正方形
可配对顶点是:
1、坐标不一致
2、距离远但不超过58个单位(对角线距离40cm×40cm)
3.形成非正交度的点
我设法根据这些条件找到配对,但还有很长的路要走。
我知道我写了很长一段时间,很多问题都没有解决。
我很乐意了解如何使其更短、更高效和更安全。
(献给您pBe)
(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))_而(
页:
[1]