【问题标题】:Script to run an AutoLISP File运行 AutoLISP 文件的脚本
【发布时间】:2023-03-31 18:26:01
【问题描述】:

我想使用 this lisp file 绘制大约 1000 个带有切线的两个圆的形状,它一次绘制一个形状。

我编写了一个脚本来绘制所有形状(见下文),但是它在第一个参数之后等待下一个参数,尽管它在脚本中。

您能否指导我如何修复我的脚本或如何编辑 lisp 文件,以便我可以在没有交互输入的情况下绘制所有形状?

这是我当前的脚本:

ctan
0,0,0
5
0,10,0
10

【问题讨论】:

    标签: autocad autocad-plugin autolisp


    【解决方案1】:

    问题是脚本和 AutoLISP 函数的评估发生在同一个处理器线程中,因此当您从脚本文件中评估 AutoLISP 函数时,AutoLISP 函数将焦点从脚本移开,并且脚本文件的其余部分将在 AutoLISP 函数完成评估之后进行评估。

    为了解决这个问题,我建议定义一个单独的 AutoLISP 函数,它接受与每个圆的中心和半径相对应的四个参数,并以与我的 Circle Tangents 应用程序相同的方式构造 2D LWPolyline。

    然后,您可以从您的脚本文件中评估此类函数(如果需要,可能在多个绘图上),或从另一个 AutoLISP 程序中评估该函数。

    这样的功能可能是:

    (defun ctan ( c1 r1 c2 r2 / d1 d2 a1 a2 zv )
        (if (< (abs (setq d1 (- r1 r2))) (setq d2 (distance c1 c2)))
            (progn
                (setq a1 (atan (sqrt (- (* d2 d2) (* d1 d1))) d1)
                      a2 (angle c1 c2)
                      zv (trans '(0.0 0.0 1.0) 1 0 t)
                )
                (entmake
                    (list
                       '(000 . "LWPOLYLINE")
                       '(100 . "AcDbEntity")
                       '(100 . "AcDbPolyline")
                       '(090 . 04)
                       '(070 . 01)
                        (cons 010 (trans (polar c1 (+ a1 a2) r1) 1 zv))
                        (cons 042 (/ (sin (/ (- pi a1) 2.0)) (cos (/ (- pi a1) 2.0))))
                        (cons 010 (trans (polar c1 (- a2 a1) r1) 1 zv))
                        (cons 010 (trans (polar c2 (- a2 a1) r2) 1 zv))
                        (cons 042 (/ (sin (/ a1 2.0)) (cos (/ a1 2.0))))
                        (cons 010 (trans (polar c2 (+ a1 a2) r2) 1 zv))
                        (cons 210 zv)
                    )
                )
            )
        )
    )
    

    加载后,您可以使用以下方式从您的脚本或其他 AutoLISP 程序中调用:

    (ctan '(0 0 0) 5 '(0 10 0) 10)
    

    【讨论】:

      猜你喜欢
      • 2016-06-25
      • 2014-07-29
      • 2020-12-14
      • 2016-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多