乐筑天下

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

[编程交流] 用s旋转所有属性

[复制链接]

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:17:19 | 显示全部楼层
通知所有人,
 
代码已修改并发布到该线程的第一个帖子。所有更改的详细信息以及保存为2000格式的样例图形已提供给您以测试代码。
 
享受这个节目,
秃鹰
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:20:41 | 显示全部楼层
Buzzard,我建议您看看代码中突出显示的部分,您有一个小错误
 
  1. ;///////////////////////////////////////////////////////////////////////
  2. ;///////////////////////////////////////////////////////////////////////
  3. ;///                                                                 ///
  4. ;/// Program: Attribute Value Rotate Lisp - AVR.lsp                  ///
  5. ;/// Date:    July 03, 2009                                          ///
  6. ;/// Author:  Angelo M. Bozzone aka The Buzzard                      ///
  7. ;/// Contact: The Buzzard at [url]http://www.cadtutor.net/forum/index.php[/url] ///
  8. ;///                                                                 ///
  9. ;/// Program Description: Globally rotates block attributes with a   ///
  10. ;///                      specified tag by specifying an angle.      ///
  11. ;///                                                                 ///
  12. ;/// Program Features:                                               ///
  13. ;///                                                                 ///
  14. ;/// 1. Program has variable save, restore and error trapping.       ///
  15. ;/// 2. Saves last entered attribute rotation angle for drawing      ///
  16. ;///    session.                                                     ///
  17. ;///                                                                 ///
  18. ;///                                                                 ///
  19. ;/// Function Syntax: AVR                                            ///
  20. ;///                                                                 ///
  21. ;///////////////////////////////////////////////////////////////////////
  22. ;///////////////////////////////////////////////////////////////////////
  23. ; Main Function - Attribute Value Rotate.
  24. (defun C:AVR (/ ATROT INDEX ENAME ELIST SUCE SUAB SUAD)                 ;Define function, Declare local variables
  25. (setq SUCE (getvar "cmdecho"))                                        ;Save user cmdecho
  26. (setq SUAB (getvar "angbase"))                                        ;Save user angbase
  27. (setq SUAD (getvar "angdir"))                                         ;Save user angdir
  28. (setq temperr *error*)                                                ;Save error in variable temperr
  29. (setq *error* AVR_ET)                                                 ;When error occurs goto Start Error Trap Function
  30. (setvar "cmdecho"  0)                                                 ;Turn off cmdecho
  31. (setvar "angbase"  0.000)                                             ;Set variable angbase to 0 with respect to the current UCS
  32. (setvar "angdir"   0)                                                 ;Set variable angdir  to 0 Counterclockwise direction
  33. (or   A:ANG# (setq A:ANG# 0.0))                                       ;Set default attribute angle ~ (real)
  34. [b][color=Red]  (setq A:ANG$ (rtos A:ANG# 2 1))                                       ;Convert A:ANG# ~ (real) to A:ANG$ ~ (string) (setq A:ANG#                                                          ;Set attribute angle ~ (real)
  35.    (cond                                                               ;Conditional
  36.      ((getreal (strcat "\nSpecify attribute angle < "A:ANG$" >:")))    ;Concatenate string, Get attribute angle, Display default ~ (string)
  37.      (T (setq A:ANG# A:ANG#))                                          ;Attribute angle default ~ (real)
  38.    )                                                                   ;End cond
  39. ) [/color][/b]                                                                    ;End setq
  40. (setq ATROT                                                           ;Set attribute rotation
  41.    (ssget "_x"                                                         ;Creates a selection set from the selected objects
  42.      (list                                                             ;Start list
  43.        (cons 0 "INSERT")                                               ;Filter for insertion
  44.        (cons 66 1)                                                     ;Filter for attribute
  45.      )                                                                 ;End list
  46.    )                                                                   ;End selection set
  47. )                                                                     ;End setq
  48. (if                                                                   ;If the following returns true
  49.    (/= ATROT nil)                                                      ;Selected blocks are not found
  50.    (progn                                                              ;Then do the following
  51.      (setq INDEX 0)                                                    ;Set INDEX to 0
  52.      (repeat                                                           ;Evaluate expression a specified number of times and return the last
  53.        (sslength ATROT)                                                ;Return number of entities in the selection set
  54.        (setq ENAME (ssname ATROT INDEX))                               ;Return the entity name of the indexed element of the selection set
  55.        (setq ELIST (entget ENAME))                                     ;Retrieve list of entities data
  56.        (while                                                          ;Continue to evaluate expression till nil
  57.          (/= (cdr (assoc 0 ELIST)) "SEQEND")                           ;Look for assoc list element, 0 entity type, If not =, End sequence
  58.          (setq ELIST (entget ENAME))                                   ;Retrieve entity's data
  59.          (if                                                           ;If the following returns true
  60.            (= "[color=red]TAP-VAL[/color]" (cdr (assoc 2 ELIST)))                         [color=red];If[/color][color=red] attribute tag is found ~ (Change the attribute tag value here.)[/color]
  61.            (progn                                                      ;Then do the following
  62.              (entmod                                                   ;Modify the definition data of an object (entity)
  63.                (subst                                                  ;Then substitute
  64.                  (cons 50 (AVR_DTR A:ANG#))                            ;New attribute angle
  65.                  (assoc 50 ELIST) ELIST                                ;Replace old attribute angle
  66.                )                                                       ;End subst
  67.              )                                                         ;End entmod
  68.              (entupd ENAME)                                            ;Update the attribute
  69.            )                                                           ;End progn
  70.          )                                                             ;End if
  71.          (setq ENAME (entnext ENAME))                                  ;Get the next attribute
  72.        )                                                               ;End while
  73.        (setq INDEX (1+ INDEX))                                         ;Add one to INDEX
  74.      )                                                                 ;End repeat
  75.    )                                                                   ;End progn
  76.    (ALERT "\nNo blocks were not found.")                               ;Display ALERT if selected blocks are not found
  77. )                                                                     ;End if
  78. (setq *error* temperr)                                                ;Restore error
  79. (setvar "cmdecho"   SUCE)                                             ;Restore saved user cmdecho
  80. (setvar "angbase"   SUAB)                                             ;Restore saved user angbase
  81. (setvar "angdir"    SUAD)                                             ;Restore saved user angdir
  82. (princ)                                                               ;Exit quietly
  83. )                                                                       ;End define function
  84. (princ "\nAttribute Value Rotate Lisp, AVR.lsp Loaded....")             ;Print Expression to command line
  85. (princ "\nType AVR to start program.")                                  ;Print Expression to command line
  86. ;///////////////////////////////////////////////////////////////////////
  87. ; Conversion Function - Degrees to Radians.
  88. (defun AVR_DTR (a)                                                      ;Define function
  89. (* pi (/ a 180.0))                                                     ;Calculate degrees to radians
  90. )                                                                       ;End of define function
  91. ;///////////////////////////////////////////////////////////////////////
  92. ; Error Trap Function.
  93. (defun AVR_ET (ERRORMSG)                                                ;Define function, ERRORMSG ~ (Error Message) is the argument
  94. (command nil nil nil)                                                 ;When escape selected
  95. (if                                                                   ;If the following returns true
  96.    (not                                                                ;And does not evalute to nil
  97.      (member ERRORMSG                                                  ;Search list for an occurence of an expression
  98.       '("console break" "Function Cancelled")                          ;Start list
  99.      )                                                                 ;End member
  100.    )                                                                   ;End not
  101.    (princ (strcat "\nError:" ERRORMSG))                                ;Concatenate string, Show the error message
  102. )                                                                     ;End if
  103. (setvar "cmdecho"   SUCE)                                             ;Restore saved user cmdecho
  104. (setvar "angbase"   SUAB)                                             ;Restore saved user angbase
  105. (setvar "angdir"    SUAD)                                             ;Restore saved user angdir
  106. (princ  "\nAttention! An error has occurred!")                        ;Inform user there has been an error
  107. (princ  "\nProgram now restoring the user enviroment.")               ;Inform user original enviorment is being restored
  108. (terpri)                                                              ;Terminate print
  109. (setq *error* temperr)                                                ;Restore error
  110. (princ)                                                               ;Exit quietly
  111. )                                                                       ;End of define function
  112. (princ)                                                                 ;Exit quietly
  113. ;///////////////////////////////////////////////////////////////////////
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:24:33 | 显示全部楼层
不确定,它似乎有效。
怎么了?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:26:56 | 显示全部楼层
尝试绘制没有块的图形
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:30:36 | 显示全部楼层
 
我明白了,没有错误捕获。
 
我会努力的,谢谢。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:33:07 | 显示全部楼层
 
李,
我只是在没有块的情况下尝试了一下,它报告说没有找到块。
它做它应该做的事。
有什么好处?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:39:01 | 显示全部楼层
看一看我强调的部分。
 
注意括号平衡-
 
代码将在加载时运行,而不是在调用时运行,并且您在尝试重置cmdecho等时将收到错误,因为相关变量将为零。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:39:42 | 显示全部楼层
 
对不起,我在电脑上测试版本。我将另一个副本重新粘贴到该线程。不知道发生了什么事。
据我所知是同一个版本。
但是谢谢你
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:45:06 | 显示全部楼层
此外,只需一个指针,您就可以更改以下内容:
 
对此:
 
  1. 6

 
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:46:18 | 显示全部楼层
 
谢谢李,
 
有些人认为发布的代码与我存储的代码不同。我不知道这是怎么发生的,但谢谢你发现了它。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 11:09 , Processed in 0.530050 second(s), 70 queries .

© 2020-2025 乐筑天下

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