LISP插入依赖块
我希望这是可能的,因为目前这个过程在我们产品的设计过程中需要很多时间。我们首先绘制一条与两条(多边形)直线或圆弧相交的垂直线(或xline)。
我要找的是一个LISP程序,它在选择顶部和底部交点后计算这些点之间的(垂直)距离(就像命令DIST一样)。然后,它应该插入两个块,一个在顶部,一个在底部交点。程序应根据这些交叉点之间的距离选择两个街区。
并且,为了将其全部舍入,它应该删除我们在开始时绘制的垂直线,但这是额外的。:-)
以下是应插入的块的值:
RPM块(顶部插入点):
距离
距离≥ 143和距离
距离≥ 188和距离
距离≥ 253和距离
距离≥ 343和距离
距离≥ 443和距离
距离≥ 543和距离
距离≥ 643=插入块RPM600
BP块(底部插入点):
距离
距离≥ 98和距离
距离≥ 143和距离
距离≥ 173和距离
距离≥ 203和距离
距离≥ 233和距离
距离≥ 298=插入块BP250
希望有人能解决这个问题。:-) 如果距离为525:顶部块将为“RPM400”,底部为“BP250”?
如果距离为203:顶部块为“RPM150”,底部块为“BP160”?
两种说法都正确吗? 是的,这是正确的。 坚持我会写一个快速演示。。。。
问题:垂直线总是存在吗?线是线实体吗?或者有时是多段线?
关于张贴一个样本画这里奥图。。。
Q&D:[修改为拾取两个交点并删除参考*线]
(Defun c:demo(/\u where\u checkb v1 v1b v2 v2b top bot blk\u top blk\u bot);;;PBEMA2014;;;(Defun _wheret(v vv vb/bn)(cond(( 谢谢你的帮助。
我们可以适应最有效的方式。我自己使用xline,但我知道至少有一位同事使用普通行。我们仅将这些线用作确定这些块在图形中的位置的辅助工具。插入块后,我们删除线。
希望我现在能把事情弄清楚一点:
之前的情况。
点1为顶部交点,点2为下部交点。在这种情况下,这些点之间的距离为183.2,因此应产生RPM100和BP130。
以及将块插入图形后的情况:
在这种情况下,提示选择两个交点是更好的选择。
邮政编码更新#4
另一种选择是使用带有拉伸参数的动态块 再次感谢您的帮助。我刚刚开始测试代码,但在它要求我选择顶部和底部交点之后,它就跳到了>>。
因此,在此之后,我用我有限的Lisp技能进行了一些修改,并最终用以下代码实现了它:
(Defun c:onepoot(/v1 v1b v2 v2b top bot blk\u top blk\u bot)(Defun \u wheret(v vv vb/bn)(cond((
原因是在原始代码中,它检查是否存在来自_的结果块名,如果没有找到,消息将显示为>>。
不管怎样,当你删除那些你可能会问的行时,它仍然有效?我猜想块所在的路径/文件夹包含在SFSP中,否则代码将崩溃。
我更新了上面的代码以仍然检查块的有效性。
在代码中有两条语句用于插入块。移除另一个(foreach….),在您的修改中不需要它
此外,我注意到您删除了代码中应该查找参考线的行,并在插入顶部和底部块后将其删除。
这就是为什么我们通常要求OP附加一个dwg文件来测试代码,以避免类似的问题。
底线是,代码能够帮助您解决问题。
不客气ottoo 是的,我也想过,但在某些情况下,使用更多的块来跟踪项目计数可能更容易。
页:
[1]