samifox 发表于 2022-7-5 22:50:10

从cod调用lisp命令

你好
 
例如,我发现不可能从代码中调用lisp命令
 
(command "breakline" p1 p2 mid
 
行不通
 
为什么?
 
谢谢
谢伊

hmsilva 发表于 2022-7-5 22:56:17

 
嗨,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)
)

 
希望有帮助
亨里克

BIGAL 发表于 2022-7-5 22:58:50

你可能会发现你可以使用特征线,我可能是错的,但如果它是一个快速的lisp,那么你可能需要以不同的方式调用它。我知道的示例是使用不同的lisp-defun序列来调用EXTRIM。另一种方法是编写一个defun,在自动加载的lisps中执行相同的操作,然后在程序中执行其1行。也许是谷歌的“快速特征线”
 

(load "Extrim")
(etrim obj pt1)

BIGAL 发表于 2022-7-5 23:02:52

发现它坏了。lsp在\ program files\autodesk\Autocad 2013\express目录中,您需要进入主defun C:特征线并找到defun起点,如上面的extrim,应该能够使用pts运行。
 
也许只需在代码中尝试(C:特征线)就可以了。

hmsilva 发表于 2022-7-5 23:06:01

 
“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”函数,以要求点作为参数。
 
亨里克

BIGAL 发表于 2022-7-5 23:07:39

在你的右边,Samifox可能会更快地编写自己的特征线例程,因为它将符合你的标准。

samifox 发表于 2022-7-5 23:12:22

是的,亨里克是对的,他没有进行突破。lsp到我的代码是关于重写代码或硬修改它。所以我自己写这个功能。
 
谢谢
谢伊

hmsilva 发表于 2022-7-5 23:12:46

 
Shay,
由于您的目标是将“特征线”合并到例程中,我同意编写自己的特征线例程会简单得多。
 
 
亨里克

Tharwat 发表于 2022-7-5 23:17:19

这是我很久以前写的一封信,希望你喜欢

samifox 发表于 2022-7-5 23:19:45

谢谢塔瓦(你的名字是什么意思?)
页: [1] 2
查看完整版本: 从cod调用lisp命令