乐筑天下

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

[编程交流] 什么';我的密码错了

[复制链接]

96

主题

322

帖子

234

银币

后起之秀

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

铜币
474
发表于 2022-7-6 06:30:26 | 显示全部楼层 |阅读模式
我想用这些名字来分解:a11,a12,a13,a14。。。在我的画里。我如何使用unik命令来实现它,就像:expb。??
 
  1. (
  2. DEFUN C:expb()
  3. (COMMAND "_explode"   "a11","a12","a13","a14" )
  4. )
回复

使用道具 举报

8

主题

1647

帖子

1647

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-6 06:39:59 | 显示全部楼层
我已经将您的两个线程移动到lisp部分。如果您对代码有任何疑问,请将其张贴在此处:http://www.cadtutor.net/forum/forumdisplay.php?21-AutoLISP Visual LISP amp DCL
 
我已经重命名了你的线程。用相同的标题创建多个线程确实不是一个好主意。人们可能会认为你只是双重张贴,而不费心查看其他帖子。您应该始终创建唯一的线程标题。
回复

使用道具 举报

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 06:43:59 | 显示全部楼层
这样地?
 
  1. (defun C:test (/ ss)
  2. (if
  3. (setq ss (ssget "X" '((0 . "INSERT") (2 . "a11,a12,a13,a14"))))
  4.    (progn
  5.      (setvar 'qaflags 3)
  6.      (command "_.explode" ss "")
  7.      (setvar 'qaflags 0) ;; qaflags is always 0
  8.    )
  9. )
  10. (princ)
  11. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 06:50:15 | 显示全部楼层
Hosyn,只有当a11变量已经包含实体的名称(即“a11”块的实例)时,您的代码才会工作;其他人也一样。
即使以字符串形式提供名称,也不会导致选择具有相同名称的所有块。
 
还有一些关于命令调用的其他参数真的不知道代表什么。
回复

使用道具 举报

96

主题

322

帖子

234

银币

后起之秀

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

铜币
474
发表于 2022-7-6 06:51:28 | 显示全部楼层
亲爱的MSasu,谢谢你的回答。
事实上,当我运行expb lisp时,我想要它的结果,lisp查找名为a11、a12、a13、a14的块,并在我的图形中分解它们。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 06:57:29 | 显示全部楼层
我只是想解释一下为什么你的代码失败了。
 
为了实现您想要的,请尝试上面由LISP2LEARN提供的代码。
回复

使用道具 举报

96

主题

322

帖子

234

银币

后起之秀

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

铜币
474
发表于 2022-7-6 07:04:45 | 显示全部楼层
尊敬的LISP2LEARN
我检查了你的代码,但我不知道如何与我的代码联系起来:
我想用这些名字来分解:a11,a12,a13,a14。。。在我的画里。我如何使用unik命令来实现它,就像:expb。??
  1. (
  2. DEFUN C:expb()
  3. (COMMAND "_explode"   "a11","a12","a13","a14" )
  4. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:09:24 | 显示全部楼层
下面的行是从LISP2LEARN的例程中提取的,负责选择名为“a11”、“a12”、“a13”或“a14”的块的所有实例。
  1. (ssget "X" '((0 . "INSERT") (2 . "a11,a12,a13,a14")))

这是一个使用复杂过滤器的选择-有关详细信息,请检查WCMATCH函数。
 
 
如果您想为您的公司取一个不同的名字,只需更改此行:
  1. (defun C:test (/ ss)

使用:
  1. (defun C:[color=magenta]expb[/color] (/ ss)
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:15:26 | 显示全部楼层
简单的意见,
当我们需要在代码中修改一些系统变量时,可以方便地使用简单的错误处理函数,以确保系统变量将被重置。。。
也许是这样
 
  1. (defun c:test (/  *error* old_flg ss)
  2. (defun *error* (msg)
  3. (if old_flg (setvar 'qaflags old_flg))
  4.   (princ)
  5. );; *error*
  6. (if
  7. (setq ss (ssget "X" '((0 . "INSERT") (2 . "a11,a12,a13,a14"))))
  8.    (progn
  9.      (setq old_flg (getvar "qaflags"))
  10.      (setvar 'qaflags 3)
  11.      (command "_.explode" ss "")
  12.    );; progn
  13. );; if
  14. (*error* nil)
  15. (princ)
  16. );; test

 
还有一种不同的方法,不需要更改系统变量,使用vla sendcommand,我们可以向命令行发送文本字符串,AutoCAD将运行“explode”命令行版本,允许使用命令行选项,包括“previous”,因此
 
  1. (defun c:test (/ ss)
  2. (vl-load-com)
  3. (if
  4.    (setq ss (ssget "X" '((0 . "INSERT") (2 . "a11,a12,a13,a14"))))
  5.       (vla-sendcommand
  6. (vla-get-activedocument (vlax-get-acad-object))
  7. (strcat "explode" " " "p" " " " ")
  8.       )
  9. );; if
  10. (princ)
  11. );; test

 
希望有帮助
亨里克
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:15:59 | 显示全部楼层
@亨里克,如果在你的第一次例行训练中没有发现任何障碍怎么办?错误函数最后会返回什么?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-16 01:17 , Processed in 2.965175 second(s), 73 queries .

© 2020-2025 乐筑天下

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