alexb119 发表于 2022-7-6 12:03:16

恢复默认属性lo

你好
有没有办法将已移动的属性恢复到其原始(默认)位置?
谢谢

Lee Mac 发表于 2022-7-6 12:20:34

请尝试以下操作:

;; Restore Attribute Position~By Lee Mac~12.12.2009

(defun c:ResAtt (/ *error* BLK DOC ENT NPT OBJ UFLAG VEC)
(vl-load-com)

(setq doc (vla-get-ActiveDocument
             (vlax-get-acad-object)))

(defun *error* (msg)
   (and uflag (vla-EndUndoMark doc))
   (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
       (princ (strcat "\n** Error: " msg " **")))
   (princ))
   

(while
   (progn
   (setq ent (car (nentsel "\nSelect Attribute to Reset: ")))

   (cond ((eq 'ENAME (type ent))

            (if (eq "AcDbAttribute"
                      (vla-get-ObjectName
                        (setq obj (vlax-ename->vla-object ent))))
               
                (if (eq :vlax-true (vla-get-LockPosition obj))
                  (princ "\n** Invalid Attribute Type **")

                  (progn
                  (setq uflag (not (vla-StartUndoMark doc)))

                  (vlax-for sub (vla-item
                                    (vla-get-Blocks doc)
                                    (vla-get-Name
                                        (setq blk (vla-ObjectIdtoObject doc (vla-get-OwnerID obj)))))

                      (if (and (eq "AcDbAttributeDefinition" (vla-get-ObjectName sub))
                               (apply (function eq)
                                    (mapcar (function strcase)
                                              (mapcar (function vla-get-TagString) (list obj sub)))))
                        
                        (setq vec (vlax-safearray->list
                                    (vlax-variant-value

                                    (vlax-get-property sub
                                       
                                        (if (eq acAlignmentLeft (vla-get-Alignment obj))

                                          'InsertionPoint 'TextAlignmentPoint)))))))

                  (if vec
                      (progn
                        (setq nPt (mapcar (function +) (vlax-safearray->list
                                                         (vlax-variant-value
                                                         (vla-get-InsertionPoint blk))) vec))
                        (vlax-put-property obj
                        
                        (if (eq acAlignmentLeft (vla-get-Alignment obj))
                           
                            'InsertionPoint 'TextAlignmentPoint)

                        (vlax-3D-point nPt))))
                  
                  (setq uflag (vla-EndUndoMark doc))))
               
                (princ "\n** Object Must be an Attribute **"))))))
(princ))

gile 发表于 2022-7-6 12:35:47

你好
 
ATTSYNC命令?

Lee Mac 发表于 2022-7-6 12:48:35

 
哈哈-漂亮的一个Gile。。。但我还是玩得很开心

alexb119 发表于 2022-7-6 12:56:26

谢谢李和吉尔。
Gile的方法当然更实用(虽然我必须在函数中使用它,我们会看到它想要的用户响应),Lee Mac的方法更具指导性。
谢谢你们俩。

Lee Mac 发表于 2022-7-6 13:13:28

不客气Alex
页: [1]
查看完整版本: 恢复默认属性lo