是的,谢谢。我对它做了一个小改动,让它完全按照我想要的方式工作,因为最初显示的值与我的“scale name”的值不对应,而不是1:#设置。
一、 e.如果我的视口比例名称为1:1000,并且使用Autocad的对象“比例名称”字段返回1:1000的值。使用lisp返回的值为1:0.5。类似地,1:200比例名称返回的值为1:0.1。
所以我所要做的就是把最后一个值乘以1000,然后所有的都是滴答声boo,所以我把你的lisp乘法值2改为0.002,效果很好。
再次感谢李,这正是我想要的。
- (defun c:VPortField (/ *error* DOC ENT OBJ PT UFLAG)
- (vl-load-com)
- ;; Lee Mac ~ 25.02.10
- (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 (entsel "\nSelect Viewport to Retrieve Scale: ")))
- (cond ( (eq 'ENAME (type ent))
- (if (eq "AcDbViewport"
- (vla-get-Objectname
- (setq Obj (vlax-ename->vla-object ent))))
- (if (setq pt (getpoint "\nSelect Point for Field: "))
- (progn
- (setq uFlag
- (not (vla-StartUndomark
- (setq doc
- (vla-get-ActiveDocument
- (vlax-get-acad-object)))))
- pt (trans pt 1 0))
- (vla-AddMText
- (if (zerop (vla-get-ActiveSpace doc))
-
- (if (eq :vlax-true
- (vla-get-mspace doc))
- (vla-get-ModelSpace doc)
- (vla-get-PaperSpace doc))
- (vla-get-ModelSpace doc))
- (vlax-3D-point pt) 0.
- (strcat "%<\\AcExpr %<\\AcObjProp Object(%<\\_ObjId "
-
- (itoa (vla-get-ObjectId obj))
- ">%).CustomScale >% * 0.002 \\f "1:%lu2%ct1%qf2816">%"))
- (setq uFlag (vla-EndUndomark doc))))
-
- (princ "\n** Object Must be a Viewport **"))))))
- (princ))
|