字段参数错误
大家好!我最近编写了一个例程,通过对话框从用户那里获取信息,并填充titlemark块。完成这项工作后,我想添加一些额外的功能,让用户选择与标题标记相关联的视口,并使用字段填充标题标记中的比例,而不是在输入中输入用户类型。我附上了我想要的结果。
这是我正在使用的代码,我想我的问题区域是红色的。
(defun C:TLMK ( / TLMK_LEN PT1)
(setvar "CMDECHO" 0)
(setq tempunits (getvar "insunits"))
;======================================================================================================================================== LOADS DIALOG BOX
(defun TLMK(/ DCL_ID)
(setq DCL_ID (load_dialog "n:/tuterj/AutoLISP/Working/TL-MK_Scale_add.DCL"))
(if (not (new_dialog "TLMK" DCL_ID)) (exit))
(setq mark_n nil)
(setq title_n nil)
(action_tile "cancel" "(done_dialog) (exit)")
(action_tile "mark_n" "(setq mark_n $value)")
(action_tile "title_n" "(setq title_n $value)")
(start_dialog)
(unload_dialog DCL_ID)
(princ)
) ;defun TLMK
(TLMK)
;======================================================================================================================================== End of Dialog BOx
(vl-load-com)
(setq vpent (car (nentsel "\nselect viewport"))) ;user selects viewport and viewport id is stored under vpent
(vlax-ename->vla-object vpent) ;vpent is transformed from an entity to a VLA object
(setq scale_fld (strcat "%<\AcObjProp.16.2 Object(%<\_ObjId "(vl-princ-to-string(vla-get-Objectid vpent))">%).CustomScale \f\"%sn\">%"));assigns field expression to variable.
(setq PT1 (getpoint "\nselect insertion point: "))
(setvar "ATTDIA" 0)
(setq title_u (strcase title_n)) ;declaring additional variable to change case for title_n
(setvar "insunits" 0);setting insertion units to unitless for proper scale of inserted block
(command "insert" "N:/Tuterj/AutoLISP/Working/TitleMark-field.dwg" PT1 "" "" title_u scale_fld mark_n);inserting the contents of TitleMark drawing and inserting user input from dialog box.
(setvar "ATTDIA" 1)
(setvar "CMDECHO" 1)
(setvar "insunits" tempunits)
) ;defun C:TLMK
我还附上了我在尝试运行例程时遇到的错误。我将感谢任何人愿意提供的任何帮助。谢谢大家的时间和阅读。
问题在于没有存储将ename转换为VLA对象引用的返回值。因此,当您将变量“vpent”作为参数提供给vla get Objectid时,它仍然引用一个ename,而不是一个出错的对象。
最简单的修复方法是重用“vpent”来存储对象引用,然后再将其提供给vla get Objectid。
(setq vpent (vlax-ename->vla-object vpent))
http://forums.augi.com/showthread.php?154081-错误的参数类型问题 啊。我想知道为什么从最初的帖子开始已经过了几天,却没有人回复。这就解释了。 .......
谢谢你的回复!正如你看到的那样,塔瓦特在奥吉论坛上给了我一些建议。再次感谢您抽出时间回复。
你好
如果您仍在搜索能够选择表示视口的对角多段线,我会说,据我所知,您无法获得该实体的比例,因为它被视为多段线而不是视口,除非其他人批准相反的情况。
要仅选择视口,可以执行以下操作。
(setq ss (ssget '((0 . "VIEWPORT"))))
Tharwat,谢谢你的回复。沼泽论坛的另一个人给了我一个功能,允许你选择多边形视口,它可以工作。李·梅斯(Lee Mace)还建议您在之前的帖子中添加什么内容,但我不确定它在代码中应该放在哪里。ss变量稍后在程序中的何处引用? 比例是vport的属性吗?如果是,那么您不能使用vla get比例吗?将检查 它只是一个变量名,您可以更改它以满足您的需要,我刚刚给了您一个示例。
页:
[1]
2