乐筑天下

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

[编程交流] 步进选择集fo

[复制链接]

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:20:28 | 显示全部楼层 |阅读模式
大家好,
 
我发布的代码效果很好,但我似乎觉得为同一个属性再次单步遍历选择集有些过分。我尝试了几种不同的方法,在单个选择集中多次编辑属性都无济于事,但无法使其正常工作。如蒙指导,不胜感激。
 
提前感谢,
秃鹰
 
  1. ;/////////////////////////////////////////////////////////////////////////////////////////
  2. ;
  3. ; F06 - Increment Attribute Value.
  4. ;
  5. (defun CIT_IAV ()
  6. (cond
  7.    ((= CIT:IDFS "0")(setq ATAG$ (strcat ""FLRN$"-"BTAG$"-"SEQN$"")))
  8.    ((= CIT:IDFS "1")(setq ATAG$ (strcat ""FLRN$""IDFR$"-"BTAG$"-"SEQN$""))))
  9. (setq SSET  (ssget "_l" (list (cons 0 "INSERT")(cons 66 1)))
  10.        INDX 0
  11.        ENAM  (ssname SSET INDX)
  12.        ELST (entget ENAM))
  13. (while
  14.    (/= (cdr (assoc 0 ELST)) "SEQEND")
  15.    (setq ELST (entget ENAM))
  16.    (if
  17.      (= "ID-TAG" (cdr (assoc 2 ELST)))
  18.      (progn
  19.        (entmod (subst (cons 1 ATAG$)(assoc 1 ELST) ELST))
  20.        (entupd ENAM)))
  21.    (setq ENAM (entnext ENAM)))
  22. (setq INDX (1+ INDX)
  23.        SEQN# (atoi SEQN$)
  24.        SEQN# (+ SEQN# 1)
  25.        SEQN$ (itoa SEQN#)
  26.        SEQN$ (CIT_AT:NumFix SEQN$ 3)
  27.        CIT:SEQN SEQN$)
  28. (CIT_RA)
  29. (princ))
  30. ;
  31. ;/////////////////////////////////////////////////////////////////////////////////////////
  32. ;
  33. ; F07 - Rotate Attribute.
  34. ;
  35. (defun CIT_RA ()
  36. (setq SSET (ssget "_l" (list (cons 0 "INSERT")(cons 66 1)))
  37.        INDX 0
  38.        ENAM (ssname SSET INDX)
  39.        ELST (entget ENAM))
  40. (while
  41.    (/= (cdr (assoc 0 ELST)) "SEQEND")
  42.    (setq ELST (entget ENAM))
  43.    (if
  44.      (= "ID-TAG" (cdr (assoc 2 ELST)))
  45.      (progn
  46.        (entmod (subst (cons 50 RAD#)(assoc 50 ELST) ELST))
  47.        (entupd ENAM)))
  48.    (setq ENAM (entnext ENAM)))
  49. (setq INDX (1+ INDX))
  50. (princ))
  51. ;
  52. ;/////////////////////////////////////////////////////////////////////////////////////////
  53. ;
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:24:10 | 显示全部楼层
很抱歉过早发布,但我找到了另一种方法。在所有情况下,我都想增加属性值,但并非所有情况下都需要旋转属性。我能够将其组合成一个函数,所以我对此没有意见。我将在不久的将来发布一个完整的代码。
 
谢谢
秃鹰
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:27:59 | 显示全部楼层
秃鹰,
 
当我处理修改多个属性时,我要做的一件事是在找到匹配项时设置一个标志。如果标志为T,则在SEQEND的循环结束后发出(entupd)。您确实需要在开始时将标志设置为零。
 
另一个选项根本不是调用(entupd),而是在例程结束时发出(命令“_.REGENALL”)
 
(entupd)真的会让一个大的纠察队陷入困境-大卫
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:31:24 | 显示全部楼层
你好,RenderMan,
 
我可以发布我所做的,但如果没有我仍在开发的完整代码,任何人都无法理解。正如我提到的,我将在不久的将来发布这段代码,这段代码很快就会实现,但它将位于一个完全不同的线程上。
 
我也是这么做的。我使用If语句来避免在属性不满足这些条件时旋转属性。
 
谢谢你的邀请。
[code];//////////////////////////////////////////////////////////////////////////////////////////////////////////////////;;F06-编辑属性值。;(defun CIT\u EAV()(cond(=CIT:IDFS“0”)(setq ATAG$(strcat”“FLRN$”-“BTAG$”-“SEQN$)((=CIT:IDFS“1”)(setq ATAG$(strcat”“FLRN$”“IDFR$”-“BTAG$”-“SEQN$)(setq SSET(ssget“\u l”(list(cons 0“INSERT”)(cons 66 1)))INDX 0 ENAM(ssname SSET INDX)ELST(entget ENAM))(而(/=(cdr(assoc 0 ELST))“SEQEND”)(setq ELST(entget ENAM))(if(=“ID-TAG”(cdr(assoc 2 ELST))(progn(entmod(subst(cons 1 ATAG$)(assoc 1 ELST)ELST))(entupd ENAM))(setq ENAM(entnext ENAM))(setq INDX(1+INDX)SEQN#(atoi SEQN$)SEQN#(+SEQN#1)SEQN$(itoa SEQN#)SEQN$(CIT U AT:NumFix SEQN$3)CIT:SEQN SEQN#)(if(and(>DEG#90.0)(
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:35:07 | 显示全部楼层
 
谢谢David,
 
很高兴知道,我会试试的。
还需要提及的是,如果满足某些条件,这是一个被多次修改的单一属性。
再次感谢
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:38:44 | 显示全部楼层
 
 
对不起,那个只秃鹰,我一定没有完全阅读你的帖子。帖子被删除了,非常感谢。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:40:32 | 显示全部楼层
我想我们是在同一时间发布的。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:45:38 | 显示全部楼层
大卫,
 
我刚刚试过regenall,这是一个更好的调用,因为我可以看到它的区别。
 
谢谢
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:47:29 | 显示全部楼层
大卫,
 
通过while循环,我一次只插入一个具有一个属性的块。如前所述,在所有情况下,属性值都将增加一。在某些情况下,属性增加后,可能会根据条件进行旋转。我发现在这种情况下,regenall方法似乎较慢,尽管它有点干净,但它表明每次都在重新定义块,尽管我知道事实并非如此,因为属性刚刚更新。我想我会坚持原来的方法,直到我发布了完整的代码来评估每个人,看看在这种情况下哪个方法实际上更好。
 
尽管如此,还是要谢谢你,不过我会等你的。当我发布完整的代码时,我使用的方法对您来说会更加明显。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:53:21 | 显示全部楼层
秃鹰,
 
在整个例程结束时只发出1个regnell吗-大卫
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 20:57 , Processed in 0.851746 second(s), 72 queries .

© 2020-2025 乐筑天下

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