乐筑天下

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

[编程交流] 尝试使用“命令”运行

[复制链接]

25

主题

62

帖子

37

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
125
发表于 2022-7-5 17:20:41 | 显示全部楼层 |阅读模式
因此,我已经从在模板文件中包含块转移到使用AutoLISP脚本来检查块是否存在,如果还没有,则创建它们。
 
以下是中心线的示例:
 
  1. (defun C:CL()
  2. (if (not (tblsearch "BLOCK" "CL"))
  3. (progn
  4. (entmakex (list        (cons 0 "BLOCK")
  5.                         (cons 100 "AcDbEntity")
  6.                         (cons 100 "AcDbBlockReference")
  7.                         (cons 67 0)
  8.                         (cons 8 "0")
  9.                         (cons 2 "CL")
  10.                         (cons 10 (list 0 0 0))
  11.                         (cons 70 0)))
  12. (entmakex (list (cons 0 "LINE")
  13.                         (cons 8 "MSGuidelines")
  14.                         (cons 10 (list 0 0 0))
  15.                         (cons 11 (list 0 6000 0))
  16.                         (cons 62 256)))
  17. (entmakex (list (cons 0 "LINE")
  18.                         (cons 6 "Phantom2")
  19.                         (cons 8 "Annotations")
  20.                         (cons 10 (list 0 0 0))
  21.                         (cons 11 (list 0 6000 0))
  22.                         (cons 48 100)
  23.                         (cons 62 256)))
  24. (entmakex (list (cons 0 "ENDBLK")
  25.                         (cons 100 "AcDbBlockEnd")
  26.                         (cons 8 "0")))
  27. (command "insert" "CL" "S" "1" "R" "0")
  28. )
  29. (command "insert" "CL" "S" "1" "R" "0")
  30. )
  31. (princ)
  32. ) ;End defun CL

 
我发现,如果我在另一个脚本中尝试以下代码行
 
  1. (command "CL" ...)

 
我得到的消息是,命令CL不存在,即使它本身运行良好。难道不能使用“命令”来调用自定义脚本吗?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:34:57 | 显示全部楼层
试着这样做:
  1. (C:CL)
回复

使用道具 举报

25

主题

62

帖子

37

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
125
发表于 2022-7-5 17:49:32 | 显示全部楼层
嗯,行得通,但不是我所需要的方式。对于CL.lsp,用户选择块需要去的地方。在另一个调用CL.lsp的脚本中,块的位置是由脚本本身计算的,我似乎无法在不添加参数的情况下将位置传递给CL.lsp,这违背了CL.lsp自身运行的目的。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:58:29 | 显示全部楼层
只有我一个人,但脑海中浮现出“Block library”这个词。只需使用insert。
 
我们可能至少有200多个
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:09:53 | 显示全部楼层
ps脚本是Autocad中使用的一种命令语言,而不是“lisp脚本”,可能使用“lisp程序”之类的术语,因为lisp是Autodesk在20世纪70年代左右创建的自己的子集的编程语言。早在当时,Fortran Cobol Basic C等
 
这只会让阅读标题变得更容易,从而了解问题的内容。
回复

使用道具 举报

4

主题

305

帖子

225

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
97
发表于 2022-7-5 18:18:55 | 显示全部楼层
 
 
一个想法是在运行(C:CL)之前在脚本中设置一个全局变量,然后更改C:CL函数以检查全局变量,如果不是零,则自动将块插入所需位置。只有在为块插入设置了预设坐标的情况下,这才有效。用户交互不是编写脚本的最佳方式。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 18:27:06 | 显示全部楼层
如果在创建块期间出现任何故障,entmake不会返回错误。只有零
 
例如,如果当前样式表中不存在线型PHANTOM2,则不会创建块cl,因此无法插入。
 
另一种可能性是使用组8和67进行块表头entmake调用。据我所知,他们并不受尊重
 
可能是100 s组的顺序或位置。
 
 
 
-大卫
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 07:51 , Processed in 0.562490 second(s), 77 queries .

© 2020-2025 乐筑天下

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