mts5143 发表于 2022-7-6 22:22:11

通过Prog控制参数

我创建了一个使用参数在角钢上改变孔间距的图形,但合并if-then语句以根据其他参数的值控制一些参数的值将非常有益。
 
例如,如果d1参数=14,则d2参数=3。如果d1参数=15,则d2参数=2。
 
我从Inventor中的iLogic中得到了这个想法,它很容易使用。我知道AutoCAD没有这种功能,但我认为VBA等编程可以帮助我解决这个问题。我没有一个强大的编程背景,所以任何建议都是可取的。

BIGAL 发表于 2022-7-6 22:31:21

和lisp相处得很轻松
 

(setq d1(getreal "\nEnter d1 value"))
(cond
((= d1 14)(setq d2 2))
((= d1 15)(setq d2 3))
.. and so on
)

 
您可以添加一个仅检查有效条目的iniget 14 15 16 17

mts5143 发表于 2022-7-6 22:44:19

在我看来,我必须在输入d1后运行命令来更新d2。当我输入d1的输入时,有没有办法让d2更新,而不必单独运行命令?

BIGAL 发表于 2022-7-6 22:44:53

?? 这就是我发布的内容。

mts5143 发表于 2022-7-6 22:56:24

好啊原谅我。我口齿不清。你能再给我一点指示吗。我知道如何将其输入记事本、命名和加载。加载后,它提示我输入一个值。但不会改变我的d2。除了它不能正常工作之外,我是要在每次更改d1后更新d2时都运行它,还是在第一次运行lisp后输入d1后d2会自动更新。

BIGAL 发表于 2022-7-6 23:06:36

复制并粘贴到记事本中,另存为say test。lsp然后进行加载测试。lsp遵循提示使用14或15
 
(setq d1(getreal "\nEnter d1 value"))
(cond
((= d1 14)(setq d2 2))
((= d1 15)(setq d2 3))
((> d1 15)(princ "Greater than 15"))
((< d1 14)(princ "less than 14"))
)
(princ (strcat "the value of d2 is " (rtos d2 2 0)))
(princ)

BIGAL 发表于 2022-7-6 23:08:23

Mts5143刚刚意识到你在这里谈论约束,不是吗?不是一个完全不同的程序,一起发布一个屏幕抓图

mts5143 发表于 2022-7-6 23:20:20

是的,我说的是约束。抱歉给你带来了困惑。
 
当我将o\u COIL\u尺寸更改为15时,“红色”紧固件将靠近板,因此我希望将其向下移动1”。当o\u COIL\u尺寸=16时也是如此,因此我希望将其向下移动2”。
 
您可以使用o\u COIL\u维度值来了解我在说什么。
 
如果我在inventor中,我会在iLogic中编写如下代码,但我正试图在autocad中找到解决方法,因为autocad没有iLogic。
 
 
 
如果o\u线圈尺寸=15
那么d48=4
 
elseif o_COIL_尺寸=16
然后d_48=5
 
如果结束
 
 
我附上了支持文件。

叠加。图纸

BIGAL 发表于 2022-7-6 23:28:23

JD在读这个吗?约束有很多你可以做的事情,我只是用得不够。你读了帮助部分了吗?
页: [1]
查看完整版本: 通过Prog控制参数