Lisp中的极性问题
哈,第一个帖子。,在我的空闲时间里,我只会Lisp程序一个半月,这是一个可以潜入的大世界。,。在我正在使用的LISP中,我想在钢板的侧视图DWG中创建一个孔的二维表示。(例如连接板:“线”“@24
问题是,经过深思熟虑和努力,我可以在正交角度一致地得到“孔”,但不是在所有其他角度。我不知道为什么。,
这是密码,我当然是新来的。,否则,解决这个问题就太好了。,任何“你应该这样做”都将不胜感激。。我仍在努力掌握所有的“怎么做”。
我希望我的代码标签是对的
使用vlax safearray的位置->可以使用的列表
不确定这是否是你想要的。我建议使用有意义的变量名
例如:ENDP-端点
同样有用的,大小写函数名
例如GETPOINT-GETPOINT(或java约定GETPOINT)
编辑:变量名POO,c'mon wtf
希望这有帮助
奥利 很抱歉回复了这么长时间,我正在尝试注释代码,以更好地显示我正在做的事情,重命名变量,删除任何未使用的变量,等等。上帝保佑系统。,但我很快就会发帖,希望今天。,感谢您为safearray所做的工作。,我还在研究极坐标问题,,,我加了z坐标,还有一些问题,我想我在不知不觉中改变了一些其他的东西,所以我要回去。
顺便说一句,poo只是一个随机的小数字,但小的都是相对于dwg,ha。,点原点偏移(如果需要)
我猜你以前从未见过我的测试代码,管理员会更改它
令人惊讶的是,一个21岁的男性会立刻想到一些随机变量
花
(p.s.抱歉没有建设性) 好的,希望我已经更好地解释了我的目的,在“PolHole”命令的代码中,我使用了polar命令,我只能在我的电脑上从左向右(0度)运行它。。我检查了“PolarDirection”(用户定义)变量,该变量完美地更新到我选择的任何角度,但线条似乎没有以相同的方式复制和偏移。。。
出于好奇,我为“Hole”命令编写了代码。,同样的原理,只需拿出“极轴”命令,缩放和图案填充。。但我从各个角度工作。。。。。亲爱的,我真搞不懂为什么复制和偏移没有达到表面定义的角度。
“PolHole”-仅从左向右工作;;在钢连接板中创建孔符号-错误处理程序-(defun*ERROR*(MSG)(setvar“OrthoMode”OrthoSetting)(setvar“PolarMode”PolarSetting)(setvar“CmdEcho”1)(princ MSG)(princ))-结束DEFUN*错误*;======================================================================================================;;_______l___________________________________________________________;;选择l l88l88l使l选择;;该行->l l88l88l EndPointX StartPointX)(setq DifferenceX(-EndPointX StartPointX))(setq DifferenceX(-StartPointX EndPointX));end if(setq DistanceToMidPointX(/(abs DifferenceX)2))(if(>EndPointY StartPointY)(setq DifferenceY(-EndPointY StartPointY))(setq DifferenceY(-StartPointY)));结束if(setq DistanceToMidPointY(/(ABS DifferenceY)2));=========================================================;;这将决定应用中点距离的方向;;====================================================;(cond((EndPointX StartPointX);如果“LineRef”从起始点向右移动(setq DifferenceX(-EndPointX StartpointX));这样做。。。如果向左移动(setq DifferenceX(-StartpointX EndPointX));这样做);结束if(setq DistanceToMidPointX(/(abs DifferenceX)2);得到“x”中绝对差的中间值(如果(>端点开始点);如果“LineRef”从起始点向上移动(setq DifferenceY(-EndPointY StartPoint));这样做。。。如果向下移动(setq DifferenceY(-StartPointY EndPointY));这样做);结束if(setq DistanceToMidPointY(/(ABS DifferenceY)2);得到“y”中绝对差的中间值;这将决定应用中点距离(cond(( 嗨,POOCRAKIN,我的调试方法是,在构建lisp时,让所有变量都是全局的,当它像spected一样运行时,我将其本地化。
此外,我没有使用错误,我完成了lisp。
另外,当进行除法时,注意使用实数作为除数,因此如果除数是整数并且除数太大,则结果将是整数
(/5 2)返回2,(/5 2.0)2.5。
我使用的另一个技巧是对每个变量进行setq。
由于我不知道你想做什么,我不能给你进一步的帮助。
您可以上传一个示例dwg吗?
加布里埃尔。
页:
[1]