从cod调用lisp命令
你好例如,我发现不可能从代码中调用lisp命令
(command "breakline" p1 p2 mid
行不通
为什么?
谢谢
谢伊
嗨,Shay,
“特征线”函数不是为了从其他函数调用而编写的,但是可以使用脚本文件调用“特征线”函数吗?这可以在代码中完成。
作为“演示”
(defun c:demo ( / f fo p1 p2 p3 pt1 pt2 pt3)
(if (and (setq p1 (getpoint "\nPick start point:"))
(setq p2 (getpoint "\nPick end point:"))
)
(progn
(setq p3 (polar p1 (angle p1 p2) (/ (distance p1 p2) 2))
pt1 (strcat (rtos (car p1) 2 16)
","
(rtos (cadr p1) 2 16)
","
(rtos (caddr p1) 2 16)
)
pt2 (strcat (rtos (car p2) 2 16)
","
(rtos (cadr p2) 2 16)
","
(rtos (caddr p2) 2 16)
)
pt3 (strcat (rtos (car p3) 2 16)
","
(rtos (cadr p3) 2 16)
","
(rtos (caddr p3) 2 16)
)
f "c:/Windows/Temp/temp.scr"
fo (open "c:/Windows/Temp/temp.scr" "W")
)
(write-line "breakline" fo)
(write-line pt1 fo)
(write-line pt2 fo)
(write-line pt3 fo)
(close fo)
(command "_.script" "c:/Windows/Temp/temp.scr")
)
)
(princ)
)
希望有帮助
亨里克 你可能会发现你可以使用特征线,我可能是错的,但如果它是一个快速的lisp,那么你可能需要以不同的方式调用它。我知道的示例是使用不同的lisp-defun序列来调用EXTRIM。另一种方法是编写一个defun,在自动加载的lisps中执行相同的操作,然后在程序中执行其1行。也许是谷歌的“快速特征线”
(load "Extrim")
(etrim obj pt1)
发现它坏了。lsp在\ program files\autodesk\Autocad 2013\express目录中,您需要进入主defun C:特征线并找到defun起点,如上面的extrim,应该能够使用pts运行。
也许只需在代码中尝试(C:特征线)就可以了。
“extrim.lsp”编写为从其他函数调用,我们有“etrim”函数,它需要两个参数,
;Entity-TRIM function
;takes: na - entity name
;a - a point, the side to trim on
;NOTE: This function does not allow for the possible miss of
; non-continuous linetypes.
;
(defun etrim ( na a / la b d e1 ...
正如我之前所说,“特征线”函数不是从其他函数调用的,具有
我们只是调用“特征线”命令,不可能从另一个例程中自动执行整个命令(我认为这是最重要的)。。。
根据我的理解(无论它值多少),从另一个例程中调用“特征线”有三种方法。
-使用脚本
-vla sendcommand方法(带硬编码点)
-编写一段代码,重写“breackl.lsp”和“c:breakline”函数,以要求点作为参数。
亨里克 在你的右边,Samifox可能会更快地编写自己的特征线例程,因为它将符合你的标准。 是的,亨里克是对的,他没有进行突破。lsp到我的代码是关于重写代码或硬修改它。所以我自己写这个功能。
谢谢
谢伊
Shay,
由于您的目标是将“特征线”合并到例程中,我同意编写自己的特征线例程会简单得多。
亨里克 这是我很久以前写的一封信,希望你喜欢 谢谢塔瓦(你的名字是什么意思?)
页:
[1]
2