乐筑天下

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

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

[复制链接]

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 11:45:29 | 显示全部楼层 |阅读模式
2009年7月28日
以下是完整的修订代码。
此代码将提示输入旋转角度。
代码也有错误捕捉。
要将此程序用于您自己的区块
属性指以红色突出显示的代码部分。
您可以在代码中的此处更改属性标记
与您自己的属性标记一起使用。
请参阅下面的附加Line_扩展。测试程序的图纸。
 
此代码的函数语法:AVR
Line_扩展。图纸
AVR。拉链
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 11:49:04 | 显示全部楼层
 
 
无论如何,谢谢你,我知道了!
 
  1. (defun C:TVR ()
  2. (setq BNAM "8-WAY")
  3. (setq BLOCROT (ssget "x" (list (cons 0 "INSERT")(cons 2 BNAM)(cons 66 1))))
  4. (if
  5.    (/= BLOCROT nil)
  6.    (progn
  7.      (setq INDEX 0)
  8.      (repeat
  9.        (sslength BLOCROT)
  10.        (setq ENAME (ssname BLOCROT INDEX))
  11.        (setq ELIST (entget ENAME))
  12.        (while
  13.          (/= (cdr (assoc 0 ELIST)) "SEQEND")
  14.          (setq ELIST (entget ENAME))
  15.          (if
  16.            (= "TAP-VAL" (cdr (assoc 2 ELIST)))
  17.            (progn
  18.              (entmod
  19.                (subst
  20.                  (cons 50 0.0)
  21.                  (assoc 50 ELIST) ELIST
  22.                )
  23.              )
  24.              (entupd ENAME)
  25.            )
  26.          )
  27.          (setq ENAME (entnext ENAME))
  28.        )
  29.        (setq INDEX (1+ INDEX))
  30.      )
  31.    )
  32.    (ALERT (strcat "\nThe block "BNAM" was not found."))
  33. )
  34. (princ)
  35. )
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 11:53:14 | 显示全部楼层
哇!我写了一些东西来做你想做的事情,有趣的是,我现在正在使用它
 
不确定这是否完全解决了问题,但这是我的函数:
 
  1. (defun c:cr( / ss obj)
  2. (vl-load-com)
  3. (if (ssget "X" (list (cons 2 "IDI-SECU-CAMR")))
  4.    (progn
  5.      (vlax-for obj (setq ss (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))))
  6.    (if (= (vla-get-HasAttributes obj) :vlax-true)
  7.      (foreach attVar (vlax-invoke obj 'GetAttributes)
  8.        (if (not (= (vla-get-TagString attVar) "NUM"))
  9.          (vla-put-Rotation attVar 0)))))
  10.      (vla-delete ss)))
  11. (princ)
  12. )

 
非常简单:获取具有特定名称的所有块,然后遍历块的每个属性,看看哪个属性标记为“NUM”,并将旋转设置为0(vla put旋转部分)。我写这篇文章是因为我有很多具有各种旋转的块,我想把所有这些块的属性放回0度旋转,以便于可读性。
 
希望能有所帮助。^。^
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 11:55:29 | 显示全部楼层
 
谢谢你,
 
但在上一篇帖子中,我在最后一分钟才弄明白。我很欣赏代码,但我只是在寻找一些方向。我只需要让代码正常工作。我想学习这些东西,而不是依赖别人为我做。相信我,当我告诉你的努力和代码是非常感谢。我知道我很快就想出来了,但你只是在那些时候,你的大脑似乎被洗掉了。
 
 
谢谢
秃鹰
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:58:35 | 显示全部楼层
另一种快速方法:
 
  1. ;; ============[ AttRot.lsp ]===============
  2. ;;
  3. ;;  FUNCTION:
  4. ;;  Will move Multiple Attribute Tags
  5. ;;
  6. ;;  SYNTAX: ATTROT
  7. ;;
  8. ;;  AUTHOR:
  9. ;;  Copyright (c) 2009, Lee McDonnell
  10. ;;  (Contact Lee Mac, CADTutor.net)
  11. ;;
  12. ;;  VERSION:
  13. ;;  1.0  ~  02.07.2009
  14. ;;
  15. ;; =========================================
  16. (defun c:AttRot (/ *error* lklst ent Blk
  17.                   Obj bNme ss bPt ObjLst
  18.                   iPt gr dat cAng)
  19. (vl-load-com)
  20. (defun *error* (msg)
  21.    (vla-EndUndoMark
  22.      (vla-get-ActiveDocument
  23.        (vlax-get-acad-object)))
  24.    (if lklst
  25.      (foreach l lklst
  26.        (vla-put-lock
  27.          (car l) (cdr l))))
  28.    (if (not
  29.          (wcmatch
  30.            (strcase msg)
  31.              "*BREAK,*CANCEL*,*EXIT*"))
  32.      (princ
  33.        (strcat "\n<< Error: " msg " >>")))
  34.    (redraw)
  35.    (princ))
  36.            
  37. (vlax-for l
  38.    (vla-get-layers
  39.      (vla-get-ActiveDocument
  40.        (vlax-get-acad-object)))
  41.    (setq lklst
  42.      (cons
  43.        (cons l
  44.          (vla-get-lock l)) lklst))
  45.    (vla-put-lock l :vlax-false))
  46. (while
  47.    (progn
  48.      (setq ent
  49.        (car (nentsel "\nSelect Attribute: ")))
  50.      (cond
  51.        ((eq 'ENAME (type ent))
  52.         (if
  53.           (not
  54.             (eq "ATTRIB"
  55.                 (cdr (assoc 0 (entget ent)))))
  56.           (princ "\n** Object is not an Attribute **")
  57.           nil))
  58.        (t (princ "\n** Nothing Selected **")))))
  59. (setq Blk
  60.    (vla-ObjectIdtoObject
  61.      (vla-get-ActiveDocument
  62.        (vlax-get-acad-object))
  63.      (vla-get-OwnerId
  64.        (setq Obj
  65.          (vlax-ename->vla-object ent)))))
  66. (setq bNme
  67.    (if (vlax-property-available-p Blk 'EffectiveName)
  68.      (vla-get-EffectiveName Blk)
  69.        (vla-get-Name Blk)))
  70. (setq ss
  71.    (ssget "_X" (list (cons 0 "INSERT")
  72.                        (cons 2 bNme)
  73.                          (cons 66 1))))
  74. (vla-StartUndoMark
  75.    (vla-get-ActiveDocument
  76.      (vlax-get-acad-object)))
  77. (setq ObjLst
  78.    (vl-remove-if-not
  79.      (function
  80.        (lambda (x)
  81.          (eq (vla-get-TagString x)
  82.                (vla-get-TagString Obj))))
  83.      (apply 'append
  84.        (mapcar 'asmi-GetAttributes
  85.          (mapcar 'vlax-ename->vla-object
  86.            (mapcar 'cadr (ssnamex ss)))))))
  87. (setq iPt
  88.    (vlax-safearray->list
  89.      (vlax-variant-value
  90.        (vla-get-TextAlignmentPoint Obj))))        
  91. (while
  92.    (progn
  93.      (setq gr (grread t 15 0) dat (cadr gr))
  94.      (cond
  95.        ((and (eq 5 (car gr)) (listp dat))
  96.         (redraw)
  97.         (setq cAng
  98.           (angle
  99.             (vlax-safearray->list
  100.               (vlax-variant-value
  101.                 (vla-get-TextAlignmentPoint Obj))) dat))
  102.         (mapcar
  103.           (function
  104.             (lambda (x)
  105.               (vla-put-rotation x cAng))) ObjLst)
  106.         (grvecs (list -6 iPt dat)) t) ; Keep in Loop
  107.        ((or (eq 25 (car gr)) ; Right Click
  108.             (eq 3 (car gr)) ; Left Click
  109.             (and
  110.               (eq 2 (car gr))
  111.               (vl-position dat '(13 32)))) ; Enter Space
  112.         nil) ; Exit Loop
  113.        )))      
  114.         
  115. (vla-EndUndoMark
  116.    (vla-get-ActiveDocument
  117.      (vlax-get-acad-object)))
  118. (foreach l lklst
  119.    (vla-put-lock
  120.      (car l) (cdr l)))
  121. (redraw)
  122. (princ))
  123. ;; ASMI
  124. (defun asmi-GetAttributes (Block / atArr caArr)
  125.   (append
  126.     (if
  127.       (not
  128.         (vl-catch-all-error-p
  129.           (setq atArr
  130.             (vl-catch-all-apply
  131.               'vlax-safearray->list
  132.             (list
  133.               (vlax-variant-value
  134.                 (vla-GetAttributes Block)))))))
  135.           atArr)
  136.     (if
  137.       (not
  138.         (vl-catch-all-error-p
  139.           (setq caArr
  140.             (vl-catch-all-apply
  141.               'vlax-safearray->list
  142.             (list
  143.               (vlax-variant-value
  144.                 (vla-GetConstantAttributes Block)))))))
  145.             caArr)))  
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:01:58 | 显示全部楼层
 
谢谢李,
 
我的大脑在最后一分钟开始跳动。见帖子2。
非常感谢,但正如你们所知,我不希望代码为我完成。我需要独立解决这个问题。在右边指我
方向就足够了。
 
非常感谢。
秃鹰
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:05:02 | 显示全部楼层
 
好的,但只是踢-这一个将让你进入角度也
 
  1. ;; ============[ AttRot.lsp ]===============
  2. ;;
  3. ;;  FUNCTION:
  4. ;;  Will move Multiple Attribute Tags
  5. ;;
  6. ;;  SYNTAX: ATTROT
  7. ;;
  8. ;;  AUTHOR:
  9. ;;  Copyright (c) 2009, Lee McDonnell
  10. ;;  (Contact Lee Mac, CADTutor.net)
  11. ;;
  12. ;;  VERSION:
  13. ;;  1.0  ~  02.07.2009
  14. ;;  2.0  ~  02.07.2009
  15. ;;
  16. ;; =========================================
  17. (defun c:AttRot (/ *error* lklst ent Blk
  18.                   Obj bNme ss bPt ObjLst
  19.                   iPt gr dat cAng vl ov str)
  20. (vl-load-com)
  21. (defun *error* (msg)
  22.    (vla-EndUndoMark
  23.      (vla-get-ActiveDocument
  24.        (vlax-get-acad-object)))
  25.    (if ov (mapcar 'setvar vl ov))
  26.    (if lklst
  27.      (foreach l lklst
  28.        (vla-put-lock
  29.          (car l) (cdr l))))
  30.    (if (not
  31.          (wcmatch
  32.            (strcase msg)
  33.              "*BREAK,*CANCEL*,*EXIT*"))
  34.      (princ
  35.        (strcat "\n<< Error: " msg " >>")))
  36.    (redraw)
  37.    (princ))
  38. (setq vl '("MODEMACRO")
  39.        ov (mapcar 'getvar vl))           
  40. (vlax-for l
  41.    (vla-get-layers
  42.      (vla-get-ActiveDocument
  43.        (vlax-get-acad-object)))
  44.    (setq lklst
  45.      (cons
  46.        (cons l
  47.          (vla-get-lock l)) lklst))
  48.    (vla-put-lock l :vlax-false))
  49. (while
  50.    (progn
  51.      (setq ent
  52.        (car (nentsel "\nSelect Attribute: ")))
  53.      (cond
  54.        ((eq 'ENAME (type ent))
  55.         (if
  56.           (not
  57.             (eq "ATTRIB"
  58.                 (cdr (assoc 0 (entget ent)))))
  59.           (princ "\n** Object is not an Attribute **")
  60.           nil))
  61.        (t (princ "\n** Nothing Selected **")))))
  62. (setq Blk
  63.    (vla-ObjectIdtoObject
  64.      (vla-get-ActiveDocument
  65.        (vlax-get-acad-object))
  66.      (vla-get-OwnerId
  67.        (setq Obj
  68.          (vlax-ename->vla-object ent)))))
  69. (setq bNme
  70.    (if (vlax-property-available-p Blk 'EffectiveName)
  71.      (vla-get-EffectiveName Blk)
  72.        (vla-get-Name Blk)))
  73. (setq ss
  74.    (ssget "_X" (list (cons 0 "INSERT")
  75.                        (cons 2 bNme)
  76.                          (cons 66 1))))
  77. (vla-StartUndoMark
  78.    (vla-get-ActiveDocument
  79.      (vlax-get-acad-object)))
  80. (setq ObjLst
  81.    (vl-remove-if-not
  82.      (function
  83.        (lambda (x)
  84.          (eq (vla-get-TagString x)
  85.                (vla-get-TagString Obj))))
  86.      (apply 'append
  87.        (mapcar 'asmi-GetAttributes
  88.          (mapcar 'vlax-ename->vla-object
  89.            (mapcar 'cadr (ssnamex ss)))))))
  90. (setq iPt
  91.    (vlax-safearray->list
  92.      (vlax-variant-value
  93.        (vla-get-TextAlignmentPoint Obj))) str "")      
  94. (while
  95.    (progn
  96.      (setq gr (grread t 15 0) dat (cadr gr))
  97.      (setvar "MODEMACRO"
  98.        (strcat "Rotation: "
  99.          (rtos (rtd (vla-get-Rotation Obj)) 2 2) (chr 186)))
  100.      (cond
  101.        ((and (eq 5 (car gr)) (listp dat))
  102.         (redraw)
  103.         (setq cAng
  104.           (angle
  105.             (vlax-safearray->list
  106.               (vlax-variant-value
  107.                 (vla-get-TextAlignmentPoint Obj))) dat))
  108.         (mapcar
  109.           (function
  110.             (lambda (x)
  111.               (vla-put-rotation x cAng))) ObjLst)
  112.         (grvecs (list -6 iPt dat)) t) ; Keep in Loop
  113.        ((eq 2 (car gr))
  114.         (cond ((or (eq 46 dat) (<= 48 dat 57)) ; numbers or dp.
  115.                (princ (chr dat))
  116.                (setq str (strcat str (chr dat))))
  117.               ((eq 8 dat) ; BackSpace
  118.                (princ (strcat (chr  (chr 32) (chr ))
  119.                (setq str (substr str 1 (1- (strlen str)))))
  120.               ((vl-position dat '(32 13)) ; Enter Space
  121.                (if (setq cAng (distof str))
  122.                  (not ; Exit Loop
  123.                    (mapcar
  124.                      (function
  125.                        (lambda (x)
  126.                          (vla-put-rotation x (dtr cAng)))) Objlst))
  127.                  nil)) ; Exit Loop
  128.               (t t))) ; Keep in Loop
  129.        ((or (eq 25 (car gr)) ; Right Click
  130.             (eq 3 (car gr))) ; Left Click
  131.         nil) ; Exit Loop
  132.        (t t)))) ; Keep in Loop
  133. (vla-EndUndoMark
  134.    (vla-get-ActiveDocument
  135.      (vlax-get-acad-object)))
  136. (foreach l lklst
  137.    (vla-put-lock
  138.      (car l) (cdr l)))
  139. (mapcar 'setvar vl ov)
  140. (redraw)
  141. (princ))
  142. (defun rtd (x)
  143. (* 180. (/ x pi)))
  144. (defun dtr (x)
  145. (* pi (/ x 180.)))
  146. ;; ASMI
  147. (defun asmi-GetAttributes (Block / atArr caArr)
  148.   (append
  149.     (if
  150.       (not
  151.         (vl-catch-all-error-p
  152.           (setq atArr
  153.             (vl-catch-all-apply
  154.               'vlax-safearray->list
  155.             (list
  156.               (vlax-variant-value
  157.                 (vla-GetAttributes Block)))))))
  158.           atArr)
  159.     (if
  160.       (not
  161.         (vl-catch-all-error-p
  162.           (setq caArr
  163.             (vl-catch-all-apply
  164.               'vlax-safearray->list
  165.             (list
  166.               (vlax-variant-value
  167.                 (vla-GetConstantAttributes Block)))))))
  168.             caArr)))  
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:09:49 | 显示全部楼层
 
这很新颖,但我只需要将角度设置为零,无论块的角度是什么。稍后我可能会以几种不同的方式使用此例程。至于现在,我很高兴我自己通过了这一关。我可能会将其添加到我喜欢创建的那些块库程序中。
我会及时到达VL,但只有在我先掌握香草之后。
 
谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:13:27 | 显示全部楼层
 
我完全理解,这启发了我创建某种属性套件。。。也许以后再来
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:14:19 | 显示全部楼层
 
听起来很棒。我不得不注意到,属性操作和值编辑是经常提到的非常流行的任务。我相信你会得到很多点击这些节目,因为他们总是在需求。
 
期待着,李,
谢谢
秃鹰
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:57 , Processed in 0.816674 second(s), 72 queries .

© 2020-2025 乐筑天下

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