ottooo 发表于 2022-7-5 23:00:39

LISP插入依赖块

我希望这是可能的,因为目前这个过程在我们产品的设计过程中需要很多时间。
 
我们首先绘制一条与两条(多边形)直线或圆弧相交的垂直线(或xline)。
 
我要找的是一个LISP程序,它在选择顶部和底部交点后计算这些点之间的(垂直)距离(就像命令DIST一样)。然后,它应该插入两个块,一个在顶部,一个在底部交点。程序应根据这些交叉点之间的距离选择两个街区。
 
并且,为了将其全部舍入,它应该删除我们在开始时绘制的垂直线,但这是额外的。:-)
 
以下是应插入的块的值:
 
RPM块(顶部插入点):
距离
距离≥ 143和距离
距离≥ 188和距离
距离≥ 253和距离
距离≥ 343和距离
距离≥ 443和距离
距离≥ 543和距离
距离≥ 643=插入块RPM600
 
BP块(底部插入点):
距离
距离≥ 98和距离
距离≥ 143和距离
距离≥ 173和距离
距离≥ 203和距离
距离≥ 233和距离
距离≥ 298=插入块BP250
 
 
希望有人能解决这个问题。:-)

pBe 发表于 2022-7-5 23:11:21

如果距离为525:顶部块将为“RPM400”,底部为“BP250”?
 
如果距离为203:顶部块为“RPM150”,底部块为“BP160”?
 
两种说法都正确吗?

ottooo 发表于 2022-7-5 23:21:23

是的,这是正确的。

pBe 发表于 2022-7-5 23:25:20

坚持我会写一个快速演示。。。。
 
问题:垂直线总是存在吗?线是线实体吗?或者有时是多段线?
关于张贴一个样本画这里奥图。。。
 
 
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((

ottooo 发表于 2022-7-5 23:31:20

谢谢你的帮助。
我们可以适应最有效的方式。我自己使用xline,但我知道至少有一位同事使用普通行。我们仅将这些线用作确定这些块在图形中的位置的辅助工具。插入块后,我们删除线。
 
希望我现在能把事情弄清楚一点:
 
之前的情况。
点1为顶部交点,点2为下部交点。在这种情况下,这些点之间的距离为183.2,因此应产生RPM100和BP130。
 

 
以及将块插入图形后的情况:
 

pBe 发表于 2022-7-5 23:40:19

在这种情况下,提示选择两个交点是更好的选择。
 
邮政编码更新#4
 
另一种选择是使用带有拉伸参数的动态块

ottooo 发表于 2022-7-5 23:50:44

再次感谢您的帮助。我刚刚开始测试代码,但在它要求我选择顶部和底部交点之后,它就跳到了>>。
 
因此,在此之后,我用我有限的Lisp技能进行了一些修改,并最终用以下代码实现了它:
 
(Defun c:onepoot(/v1 v1b v2 v2b top bot blk\u top blk\u bot)(Defun \u wheret(v vv vb/bn)(cond((

pBe 发表于 2022-7-5 23:55:48

 
原因是在原始代码中,它检查是否存在来自_的结果块名,如果没有找到,消息将显示为>>。
 
 
不管怎样,当你删除那些你可能会问的行时,它仍然有效?我猜想块所在的路径/文件夹包含在SFSP中,否则代码将崩溃。
 
我更新了上面的代码以仍然检查块的有效性。
 
在代码中有两条语句用于插入块。移除另一个(foreach….),在您的修改中不需要它
 
此外,我注意到您删除了代码中应该查找参考线的行,并在插入顶部和底部块后将其删除。
 
这就是为什么我们通常要求OP附加一个dwg文件来测试代码,以避免类似的问题。
 
 
底线是,代码能够帮助您解决问题。
 
不客气ottoo

neophoible 发表于 2022-7-6 00:03:46

是的,我也想过,但在某些情况下,使用更多的块来跟踪项目计数可能更容易。
页: [1]
查看完整版本: LISP插入依赖块