不幸的是,我不知道如何激活它。 阅读以下内容:
http://www.cadtutor.net/forum/showthread.php?t=1390 这就是我担心的。虽然Lee的代码没有错,但您应该真正探索实际字段是如何创建的,而不是如何编码的。你说你对田地知之甚少。抓住这个机会,学会钓鱼。 JimwithAj,你最后成功了吗? 是的,谢谢。我对它做了一个小改动,让它完全按照我想要的方式工作,因为最初显示的值与我的“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))
太好了-很高兴这有帮助
PS>阅读此 李,你好,
我一直在肆无忌惮地使用你的lisp,不知道你是否可以为我稍微调整一下,让它允许我选择一个对象和一个视口。
提前感谢 我有一个字段设置,使用视口比例和打印比例在图形上显示比例。我有LISP,可以应用A3或A1中的打印设置,作为这些设置的一部分,它们会全部重新生成,因此图形上的比例会发生变化,因为打印比例会发生变化。我对pdf和dwf也做了同样的处理。
我还在标题刻度上设置了一个条,在A1上长度为100mm,但在A3上尺寸变为50mm。我认为它运行得很好。
我在这个论坛上得到了很多关于Lisp程序的帮助。
嗨,吉姆,
我不确定我是否完全理解您的请求,当前代码检索视口比例并将其放置在字段中,您希望从对象中检索什么? 李,你好,
如果我有一个不规则的视口,即它开始时是一个不规则的对象,我将其定义为一个对象,进入mview->object并选择该对象。现在,当我运行vportfield并选择此视口时,我得到一个错误,即**对象必须是视口**
为你的帮助干杯
页:
1
[2]