错误:错误的参数类型:poin
大家好,我正在开发几个程序来增加属性标记值,它们似乎工作得很好。在这个过程中,我决定删除我通常使用的循环函数,并将其替换为while。我遇到了一些障碍,但我克服了。我希望程序循环插入命令,当我右键单击鼠标时,它将返回到对话框主功能。到目前为止,一切似乎都运行良好,除了当我通过退出按钮退出程序时,程序退出并在提示处留下以下消息:错误:错误参数类型:点:nil
为了得到这个错误,我修改了程序的这一部分。
(while
(progn
(setq INPT (getpoint "\nInsertion point:"));Get the insertion point
(cond
((= INPT nil)(ECP_MF))) ;When right click of mouse, Go to main function
(setq IANG (getpoint INPT) ;Get the insertion angle
INPT (trans INPT 1 0) ;Translate insertion point coords
IANG (trans IANG 1 0) ;Translate insertion angle coords
RAD# (angle INPT IANG) ;Get the angle in radians
DEG# (ECP_RTD RAD#)) ;Convert radians to degrees
(if (and (> DEG# 90.0)(<= DEG# 270.0));If insertion direction is > 90deg and <= to 270deg
(progn
(setq RAD# (ECP_DTR (+ DEG# 180.0))))) ;Add 180deg to DEG# and convert to radians
(command "._-insert" BNAM$ INPT 1 1 DEG#) ;Insert block
(ECP_IAV))))) ; Go to selectionset functions
(princ))
(princ)
ECP_RUS功能转到“我的还原用户设置”功能。它应该会清除错误,尽管我不确定。
但这是一个很好的观点,我应该调查一下,因为这是一种故意的错误。
谢谢你 如果没有看到更多的代码,很难确定
ECP_IAV函数的返回值是多少?由于它是progn语句中要计算的最后一个函数,因此此处的零可以结束该函数 另一种可能是将(ECP\U MF)移出while循环
(action_tile "cancel" "(done_dialog)(setq BUTTON nil)(ECP_RUS)")
当做
杰米
当INPT为nil或鼠标右键单击时,我希望程序返回到通过ECP\u MF运行的对话框。
ECP_IAV函数只是插入对象后的选择集函数。如果INPT返回nil并转到ECP\u MF,它将永远不会到达作为目的的选择集。由于INPT有一个nil值,我相信这就是导致错误的原因,但我无法在程序退出之前清除它。这就是我想要做的。 是否尝试将Autocad中的选项设置更改为右键单击选项?
或者,除非选择选项,否则您可能不会给程序退出的机会(退出程序[是/否]:)
你怎么想?
右键单击鼠标的目的是使输入变为零,这将使我返回到可以通过退出按钮退出的对话框。所有这些都很有效。节目结束后我才收到消息。
问题可能是您在评估后仍处于while循环中(ECP\U MF)
(while
(and
(setq INPT (getpoint "\nInsertion point:"))
(setq IANG (getpoint INPT))
)
(setq INPT (trans ...)))
(ECP_MF)
当ECP\u MF完成时,由于没有断点,AutoCAD将ECP\u MF解释为子功能,并将继续执行原始循环
下一行
(cond
((= INPT nil)(ECP_MF)))
如果输入为零,现在可能会出错吗
谢谢jammie,但我已经发现了这一点,同时继续一点一点地处理它。我必须找到另一种方法。谢谢 漂亮的杰米。我通过尝试和错误修复了它,两者都有很多。
这个程序运行得很好。我会张贴它时,它完成。
谢谢你和tharwat313的帮助。
这是第一节固定。
(setq IANG (getpoint INPT)
欢迎秃鹰,很高兴能帮上忙。听起来你的节目进展得不错
当做
杰米
页:
[1]
2