Lee Mac 发表于 2022-7-6 09:43:19

修改并不太多:
 
(defun c:test ( / doc ent format obj pt ) (vl-load-com)

   (setq format "%lu2%ct8[0.01]") ;; Field Formatting Code

   (while
       (progn (setvar 'ERRNO 0) (setq ent (car (entsel)))
         (cond
               (   (= 7 (getvar 'ERRNO))
                   (princ "\nMissed, try again.")
               )
               (   (eq 'ENAME (type ent))
                   (if
                     (and
                           (vlax-property-available-p (setq obj (vlax-ename->vla-object ent)) 'length)
                           (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-get-length (list obj))))
                     )
                     (if (setq pt (getpoint "\nSpecify Point for Field: "))
                           (vla-addtext
                               (vlax-get-property (setq doc (vla-get-activedocument (vlax-get-acad-object)))
                                 (if (= 1 (getvar 'CVPORT))
                                       'Paperspace
                                       'Modelspace
                                 )
                               )
                               (strcat
                                 "%<\\AcObjProp Object(%<\\_ObjId "
                                 (if
                                       (and
                                           (vl-string-search "64" (getenv "PROCESSOR_ARCHITECTURE"))
                                           (vlax-method-applicable-p (vla-get-utility doc) 'getobjectidstring)
                                       )
                                       (vla-getobjectidstring (vla-get-utility doc) obj :vlax-false)
                                       (itoa (vla-get-objectid obj))
                                 )
                                 ">%).Length \\f \"" format "\">%"
                               )
                               (vlax-3D-point (trans pt 1 0))
                               (getvar 'TEXTSIZE)
                           )
                     )
                     (princ "\nInvalid Object.")
                   )
               )
         )
       )
   )
   (princ)
)
 
也许更好的方法是创建一个子函数,该子函数需要属性和字段格式作为参数,然后从两个程序中调用该子函数:
 
4
 
在这里,您可以为面积字段键入“afield”,为长度字段键入“lfield”。注意,我是如何通过这些命令为子函数提供参数的。

bora111bora 发表于 2022-7-6 09:47:06

是的,最后的代码是完美的。这将在下一个项目中对我有很大帮助。再次感谢你。
页: 1 [2]
查看完整版本: 缩放面积和长度