使用lisp扩展线
你好我有一个交叉点钢筋线,我需要在其中延伸。我痛苦地通过“扩展”所有交点来重复这项任务
如何扩展所有选定的线?我如何限制投影?
我需要我的例行程序来做以下事情
[列表=1]
[*]拾取闭合多段线
[*]向内偏移3个单位
[*]将偏移线移动到名为“CONS”的层
[*]将多段线分解为直线
[*]扩展所有线(仅考虑“CONS”中的线和/或投影不超过x个单位)
[/列表]
在图中,我从右向左走了几步
谢谢
谢伊
这只是一个简单的数学问题。
可以使用钢筋和混凝土之间的间隙以及混凝土板的宽度来创建线。
我不确定我是否在跟踪你,
你的意思是用polar()画图?如果是这样的话,我该如何判断何时延长和何时不延长? 这就是问题所在。您不需要延伸,而是“绘制”一条线,参考柱脚线的左下角和右上角。
伪代码:
选择外部多段线
选择内部多边形
获取板的宽度
将外部多段线向内偏移3个单位
获取最后一条实体线的坐标
是的。。polar用于确定新线的点。 我相信你的素描是从右到左的,对吗?
您可能感兴趣的另一个功能是INTERS。
不确定inters是如何在这里发挥作用的?你能用这种方法发布一个伪代码吗。
无论如何。。。我要走了,这是一个演示
(Defun c:demo ( / om pl pl2 dist ref mn mx h w a b c d)
(setq om (getvar 'osmode))
(if (and
(setq pl(entsel "\nSelect Outer rim: "))
(setq pl2 (entsel "\nSelect Inner rim: "))
(setq dist (distance
(vlax-curve-getClosestPointTo (car pl) (Cadr pl))
(vlax-curve-getClosestPointTo (car pl2) (Cadr pl)))
)
)
(progn
(command "_offset" 3 (Car pl) (Cadr pl2) "")
(vla-getboundingbox (setq e (vlax-ename->vla-object (entlast))) 'mn 'mx)
(setq mn(vlax-safearray->list mn)
mx(vlax-safearray->list mx)
w (- (car mx) (car mn))
h (- (cadr mx) (cadr mn))
dist (- dist 6))
(foreach seg (list
(list (setq a (polar mn 0 dist)) (polar a (/ pi 2.0) h))
(list (setq b (polar mn (/ pi 2.0) dist)) (polar b 0 w))
(list (setq c (polar mx pi dist)) (polar c (* pi 1.5) h))
(list (setq d (polar mx (* pi 1.5) dist)) (polar d pi w)))
(entmakex (list (cons 0 "LINE")
(cons 10 (Car seg))
(cons 11 (Cadr seg))
'(8 . "CONS")))
)
(vla-put-layer e "CONS")
)
)(princ)
) 很高兴!
考虑到以下草图中的符号:
(setq point1st (polar pointITL (* 0.5 pi) theGap)
point3rd (polar pointITR (* 0.5 pi) theGap))
(setq point2nd (inters point1st point3rd pointETL pointEBL nil)
point4th (inters point1st point3rd pointETR pointEBR nil)) 我现在明白了。
(inters point1st point3rd pointETL pointEBL nil)
好吧,我被说服了。
干杯MSasu PbE,您的代码仅适用于矩形,im在结构级解决方案之后
这是一个草图(也包括dwg)
我想在墙壁旁边提取钢筋副本,
如果我想办法收集顶点1和10,我可以提取柱的钢筋,
如果我收集顶点1和6,我可以为这部分墙生成钢筋
黄色圆圈是生成钢筋所需的坐标,这些钢筋无法提取为法线顶点m,如6,7,8,9的钢筋,为了提取它,我需要得到6和9的投影(正如MSasu给我的思考食物)
希望它有意义
有办法编码吗?
谢谢
谢伊
积分。图纸 我想我很快就知道怎么做了。但这次您将编写代码:
下面是一个伪代码:
选择pline。
创建临时点[点图元]
通过一次选择两个“点”实体来查找点。
示例:基于图表
(同时。。。。。
在点1和10处选择2个点实体,将得到左下角和右上角的点[绘制线]
在点5和2处选择2个点实体将在左上角和右下角为您提供点[绘制线]
17 & 22, 17 & 21, 20 & 22.... [注意,这些数字并不代表实数点,仅用于讨论目的]
现在,第6、7、8和9点需要另一种方法。
如果所选点大于2,则表示全部四个点。。通过使用grread上下拖动指针,例程将“确定”下两个点的投影位置。。。
); while结束
删除创建的所有点图元。
现在,对于一种更“自动化”的方法,我需要就此回复您。我相信我能想出一些办法。。也许不是。
页:
[1]
2