乐筑天下

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

[编程交流] 仅当S

[复制链接]

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:11:28 | 显示全部楼层 |阅读模式
嘿伙计们,
 
我有一个例程,我计划用它作为加速绘图的工具。它基本上复制了修订块,并将旧修订块放在另一个块中(因此不能由另一个“块属性更新”例程编辑)。
 
该例程依赖于图形中只有一个修订块实例,因此我想将该条件添加到代码中。
 
所以我的代码是:
 
  1. (defun c:REVUP ( / ss NBASE ruPt1 )
  2. (setq ss (ssget "all" '((0 . "INSERT") (66 . 1) (2 . "*REVISIONS"))))
  3. (if (= (sslength ss) 1)
  4. (progn
  5. (SETQ NBASE (POLAR '(0 0 0) (* PI (/ 90 180.0)) (* (GETVAR "DIMSCALE") 5)))
  6. (COMMAND "COPY" SS "" "0,0,0" NBASE)
  7. (setq ruPt1 '( 0 0 0))
  8. (command "copybase" RUpt1 SS "" "pasteblock" RUpt1 "erase" "p" "")
  9. )
  10. )
  11. (princ)
  12. )

 
此代码似乎不起作用(至少在IF和PROGN部分)。即使存在多个修订块实例,该例程也将运行。
 
我只是想知道是否有人能告诉我哪里出了错。
 
非常感谢您的帮助。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:21:41 | 显示全部楼层
尝试两件事
  1. use "X" instead of "all"
  2. (ssget "all"
  3. (setq obj (ssname ss 0 ))
  4. COMMAND "COPY" obj
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:24:06 | 显示全部楼层
嗨,比格尔,
 
谢谢你的回复。我对SSGET“X”有点问题,似乎当旧的修订块放在块中时(使用“pasteblock”命令),SSGET“X”仍然能够检测到它们。当我切换到SSGET“all”时,我知道SSGET无法再检测块中的块。这是正确的吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:31:14 | 显示全部楼层
再次阅读您的帖子,为什么不创建一个包含多个rev行的块,然后检查条目是否为空,如果不为空,则查找空白并将值放入下一行?有一种计算属性的方法,而不是使用标记,如果你说每行有3个条目,那么第4个值将是第2行第7行10等等,我在VBA中的某个地方有一个例子,这很容易,它只是从attrib(0)attrib(1)attrib(2)开始,直到用完为止。5行属性(14)
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:39:04 | 显示全部楼层
不幸的是,我们设置标题栏的方式不起作用。我们将修订块堆叠在标题栏上方。因此,如果只有一个修订,则只有一个修订块。希望这是有道理的。
 
我读了一些关于SSLENGTH轰炸的内容,如果选择集中没有任何内容。那么有没有可能做一些像。。。
 
如果ss为空或不存在,则执行此操作。
如果ss的SSLENGTH为1,则执行此操作。
如果ss的SSLENGTH大于1,则执行此操作。
 
对不起,我无法输入代码,我在手机上。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 23:46:41 | 显示全部楼层
如果超过1个
 
检查最后一个条目数字/字母的属性值

检查块相对于标题栏的“位置”,以确定最新和最大
 
如果正确使用,Sslength不会爆炸
 
条件演示
 
  1. (defun c:demo ( / number)
  2.            (setq number (getint "\nEnter Number: "))
  3.         (cond
  4.           ((null number)(princ "\nNo value for number"))
  5.         ((minusp number)(princ "\nNegative number?, Why.. oh why..?"))
  6.         ((= number 1)(princ "\nThere could be only one"))
  7.         ( T (princ "\nNumber is more than 1, I'm doing this..")))
  8. (princ)
  9. )
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:51:37 | 显示全部楼层
你好,pBe,
 
非常感谢您的回复。对于无法获得的选择集,“(null number)”代码是否有效?在这种情况下,我遇到的问题是图形中不存在特定名称的块,并且由于选择集过滤器,无法创建任何选择集。
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:58:49 | 显示全部楼层
Ps,很抱歉我不能测试,因为我不在电脑旁。
 
再次感谢。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:05:05 | 显示全部楼层
 
对无选择意味着无-->(空ss)
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-6 00:07:24 | 显示全部楼层
啊,太酷了。非常感谢pBe。我会把代码修好,明天早上再测试。
 
再次感谢你们的帮助,我真的很感激。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

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

© 2020-2025 乐筑天下

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