乐筑天下

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

[编程交流] 帮助创建新功能

[复制链接]

96

主题

322

帖子

234

银币

后起之秀

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

铜币
474
发表于 2022-7-5 22:45:48 | 显示全部楼层 |阅读模式
我有一些名为ccv,hhj,ffk的lisp defun函数,这些函数在一起没有任何关系,但我想定义一个新函数,它一个接一个地顺序运行,我怎么做??(我试图在一个文件中找到它们,但当我在运行第一个函数后运行它时,它被停止)??!!!!
回复

使用道具 举报

7o7

0

主题

93

帖子

93

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 22:52:46 | 显示全部楼层
如果它们是命令函数,则将(c:ccv)(c:hhj)(c:ffk)放入新函数中。
回复

使用道具 举报

96

主题

322

帖子

234

银币

后起之秀

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

铜币
474
发表于 2022-7-5 22:55:29 | 显示全部楼层
但问题是,在运行ccv EXECTE和interupt以及autocad get控制鼠标指针并不运行其他功能hhj和ffk后运行它:cry:
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 22:58:28 | 显示全部楼层
您的函数如下所示:
1.(定义ccv(arg/var…);其中arg是参数,var是变量。

2.(定义C:ccv(/变量…);无异议地
用C:前缀,我们可以调用这个函数
 
如果你想放一个,可以试试这个,例如,C:TEST
  1. (defun C:Test ( / ccv hhj ffk) ; localize
  2. ;copy & paste your code
  3. (defun ccv .....)
  4. (defun hhj ....)
  5. (defun ffk ....)
  6. ;then if function with argument
  7. ;call this way by supplying the valid arguments
  8. (princ
  9. (list
  10. (ccv arg1 arg2 etc..) ;**
  11. (hhj arg1 arg2 etc..) ;**
  12. (ffk arg1 arg2 etc..) ;**
  13. )
  14. )
  15. (princ)
  16. ); end defun

我不太确定我是否理解你,我只是假设。
命令:测试
;(0.0“ABC”(1 2 3));输出**
**这取决于函数ccv hhj ffk中需要多少个参数
我们也不知道函数的输出是什么:字符串?数字列表思维方式等
回复

使用道具 举报

96

主题

322

帖子

234

银币

后起之秀

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

铜币
474
发表于 2022-7-5 23:05:29 | 显示全部楼层
不幸地
我尝试了建议方法,但在运行第一个函数后中断。
简化的函数类似于以下无(其中arg是参数,var是变量)
  1. (defun c:ccv()
  2.            (COMMAND ".ERASE" PAUSE )
  3. )
  4. (defun c:hhj()
  5. (if
  6.      (setq p1 (cadr (ssgetfirst)))
  7.      (progn (sssetfirst) (command "chprop" p1 "" "C" 1 ""))
  8.   )
  9. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 23:06:56 | 显示全部楼层
由于您处理擦除过程的方式,无法到达CCV调用后的代码,即AutoLISP解释器没有恢复控制。
请检查以下示例:
  1. (defun c:ccv()
  2. (command "_.ERASE" pause)
  3. (prompt "\nDone!")   [color=red];this statement isn't reached[/color]
  4. (princ)
  5. )
  1. (defun c:ccv()
  2. (command "_.ERASE")
  3. (while (> (getvar "CMDACTIVE") 0)
  4. (command pause)
  5. )
  6. (prompt "\nDone!")   [color=green];this statement is reached[/color]
  7. (princ)
  8. )
回复

使用道具 举报

96

主题

322

帖子

234

银币

后起之秀

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

铜币
474
发表于 2022-7-5 23:12:24 | 显示全部楼层
不幸地
我尝试了建议方式,但在运行ccv后中断,我不知道我能做什么??
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 23:15:59 | 显示全部楼层
您可以尝试使用(ssget“_:L”)函数在屏幕上抓取实体,然后迭代选定实体的选择集。。。如果(entget ent)返回的值不是nil,则使用(entdel ent)函数删除实体。。。这只是一种方法,但我肯定会避免使用(命令“_u.erase”暂停)行。。。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:18:49 | 显示全部楼层
您可能需要一个脚本而不是3个defun。在一个defun完成后,脚本将继续运行。
 
  1. (defun c:cccc ()
  2. (Command "script" ccvhhjkkk)
  3. )

 
脚本CCVHHJKK
  1. (c:ccv)
  2. (c:hhj)
  3. (c:ffk)
回复

使用道具 举报

96

主题

322

帖子

234

银币

后起之秀

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

铜币
474
发表于 2022-7-5 23:25:06 | 显示全部楼层
嗨BIGAL
我昨天用这个脚本尝试了你的建议,不幸的是在运行和完成ccv后中断了,我不知道我能做什么??
我真的不知道我怎么能把跑步联系起来??
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

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

© 2020-2025 乐筑天下

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