乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 98|回复: 19

[编程交流] 从cod调用lisp命令

[复制链接]

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 22:50:10 | 显示全部楼层 |阅读模式
你好
 
例如,我发现不可能从代码中调用lisp命令
 
  1. (command "breakline" p1 p2 mid

 
行不通
 
为什么?
 
谢谢
谢伊
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 22:56:17 | 显示全部楼层
 
嗨,Shay,
“特征线”函数不是为了从其他函数调用而编写的,但是可以使用脚本文件调用“特征线”函数吗?这可以在代码中完成。
作为“演示”
  1. (defun c:demo ( / f fo p1 p2 p3 pt1 pt2 pt3)
  2. (if (and (setq p1 (getpoint "\nPick start point:"))
  3.    (setq p2 (getpoint "\nPick end point:"))
  4.      )
  5.    (progn
  6.      (setq p3        (polar p1 (angle p1 p2) (/ (distance p1 p2) 2))
  7.     pt1        (strcat        (rtos (car p1) 2 16)
  8.                 ","
  9.                 (rtos (cadr p1) 2 16)
  10.                 ","
  11.                 (rtos (caddr p1) 2 16)
  12.         )
  13.     pt2        (strcat        (rtos (car p2) 2 16)
  14.                 ","
  15.                 (rtos (cadr p2) 2 16)
  16.                 ","
  17.                 (rtos (caddr p2) 2 16)
  18.         )
  19.     pt3        (strcat        (rtos (car p3) 2 16)
  20.                 ","
  21.                 (rtos (cadr p3) 2 16)
  22.                 ","
  23.                 (rtos (caddr p3) 2 16)
  24.         )
  25.     f        "c:/Windows/Temp/temp.scr"
  26.     fo        (open "c:/Windows/Temp/temp.scr" "W")
  27.      )
  28.      (write-line "breakline" fo)
  29.      (write-line pt1 fo)
  30.      (write-line pt2 fo)
  31.      (write-line pt3 fo)
  32.      (close fo)
  33.      (command "_.script" "c:/Windows/Temp/temp.scr")
  34.    )
  35. )
  36. (princ)
  37. )

 
希望有帮助
亨里克
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 22:58:50 | 显示全部楼层
你可能会发现你可以使用特征线,我可能是错的,但如果它是一个快速的lisp,那么你可能需要以不同的方式调用它。我知道的示例是使用不同的lisp-defun序列来调用EXTRIM。另一种方法是编写一个defun,在自动加载的lisps中执行相同的操作,然后在程序中执行其1行。也许是谷歌的“快速特征线”
 
  1. (load "Extrim")
  2. (etrim obj pt1)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:02:52 | 显示全部楼层
发现它坏了。lsp在\ program files\autodesk\Autocad 2013\express目录中,您需要进入主defun C:特征线并找到defun起点,如上面的extrim,应该能够使用pts运行。
 
也许只需在代码中尝试(C:特征线)就可以了。
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:06:01 | 显示全部楼层
 
“extrim.lsp”编写为从其他函数调用,我们有“etrim”函数,它需要两个参数,
  1. ;Entity-TRIM function
  2. ;takes: na - entity name
  3. ;  a - a point, the side to trim on
  4. ;NOTE: This function does not allow for the possible miss of
  5. ;      non-continuous linetypes.
  6. ;
  7. (defun etrim ( na a / la b d e1 ...

 
正如我之前所说,“特征线”函数不是从其他函数调用的,具有
我们只是调用“特征线”命令,不可能从另一个例程中自动执行整个命令(我认为这是最重要的)。。。
 
根据我的理解(无论它值多少),从另一个例程中调用“特征线”有三种方法。
 
-使用脚本
-vla sendcommand方法(带硬编码点)
-编写一段代码,重写“breackl.lsp”和“c:breakline”函数,以要求点作为参数。
 
亨里克
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:07:39 | 显示全部楼层
在你的右边,Samifox可能会更快地编写自己的特征线例程,因为它将符合你的标准。
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 23:12:22 | 显示全部楼层
是的,亨里克是对的,他没有进行突破。lsp到我的代码是关于重写代码或硬修改它。所以我自己写这个功能。
 
谢谢
谢伊
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:12:46 | 显示全部楼层
 
Shay,
由于您的目标是将“特征线”合并到例程中,我同意编写自己的特征线例程会简单得多。
 
 
亨里克
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 23:17:19 | 显示全部楼层
这是我很久以前写的一封信,希望你喜欢
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 23:19:45 | 显示全部楼层
谢谢塔瓦(你的名字是什么意思?)
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 03:27 , Processed in 0.527698 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表