关于AutoCAD二维点失效问题
具体描述一下问题产生的情况:1.打开AutoCAD
2.输入快捷键POL
3.画5边形(任何数量边的正边形都可)
4.选择边开模式,输入E
5.任意单击一点,作为端点起点
6.它要你确认第二个端点,这时输入:'cal
7.通过计算得出第二个端点坐标,输入:[@1+1,0]
8.CAD此时已计算出坐标,如:2.31,3.51,0
9.但是接下来CAD就会报错:二维点失效。
但是非常奇怪的是,这个过程中,我把“多边形”更换成“线段”或者是“多段线”,cad一样能计算出相同的坐标,但不会报错
需要各位大佬帮忙看看是什么问题
本帖最后由 WWQQMM_KY 于 2025-9-25 09:47 编辑
guosheyang 发表于 2025-9-24 12:57
兄弟,你研究这个的最终想法是啥,你懂lisP等编程语言不?如果懂,你完全可以按自己的意图改写这个命令嘛 ...
. 1、小可不懂AutoLisp的编写;
. 2、小可研究这个问题,是源于AutoCAD中的CAL运行实例,但意外碰到的报错结果(二维点无效);
. 3、对于此项报错(二维点无效),小可非常错愕,因为原实例(CAL的运行实例)并未提及,即,原实例运行一切正常;
. 4、小可有对:多边形,圆,线段,多段线等几个实例做测试:
. 1) 多边形,圆,,以中心或圆心为起点制图,用坐标计算法,不会报错;
. 2) 用Line画线段,用坐标计算法,不会报错;
. 3) 多边形--以边长模式,圆--以两点或三点模式,多段线,计算下一点坐标时,会报错--二维点无效;
. 5、所以,小可想一探究竟,是什么样的情况下,AutoCAD会报错--二维点无效,它报错的机理及违反了什么制图限制;
. 6、AutoCAD,中望CAD,这两款制图软件,同样的操作,出现同样的报错,所以,小可以为这不是CAD本身的BUG,而是违反了它们的制图原则;
. 7、小可多次测试,得到以下结论:CAD计算坐标,就是三维坐标全套计算,哪怕你没写Z轴坐标,它也会用“0”来自动补齐,最后得出一个三维坐标。然而画多边形,只要二维坐标,不要三维坐标,,,因此,所有的暴发点,源自于此;
. 8、基于以上,加以多日测试,加上小可的总结,于是我非常想知道,如何在计算坐标的形式下,得出一个符合它要的一个二维坐标,而不是三维坐标,则此问题点可以完美解决。
guosheyang 发表于 2025-9-22 00:08
如果其他版本有的可以画出来 具体是啥原因有的可以画有的不能画出来 我也不清楚 我也是猜的:l ...
1、帅哥,,真不好意思,我应该是记岔了,画“多段线”同样会报错。可能是先入为主,就是记得画“多边形”会报错,而其它不会,,,因此混一块堆了;
2、今天到同事一台电脑上试了下“中望”CAD,它提示是:错误,[@1+1,0]输入的是“三维点”,这里要二维点;
3、所以我就想着,应该不是CAD的BUG,而是二维坐标的输入方式出问题,输入带计算功能的[@1+1,0],得出的结果是一个“三维坐标”,在这个时间点,CAD不接受,它要一个“二维坐标”;
4、因此上,我想再仔细看看CAD的帮助文件,关于“二维点坐标输入方式”的段落,看能否查找到某些端倪。 本帖最后由 guosheyang 于 2025-9-21 22:55 编辑
WWQQMM_KY 发表于 2025-9-21 22:07
该说不说。
UP主想探寻的是,为什么AutoCAD在上述操作后,它会有“二维点失效”这个报错。
也即,他想 ...
(mapcar'cdr(vl-remove-if-not '(lambda(x)(=(car x)10))(entget(car(entsel)))))这个代码是获取多段线的节点坐标值的 你将这段代码复制到命令行, 然后点击你画好的多段线(正五边形),然后看看得到的坐标值里面有没有z坐标?
同理,用这个代码获取直线的节点坐标,你会发现他是有z坐标值的 (mapcar 'cdr(vl-remove-if-not '(lambda(x)(member(car x) '(10 11)))(entget(car(entsel)))))
解决方法有几种:
避免在POL命令中使用'cal透明计算,可以预先计算出精确坐标值直接输入
先用LINE命令绘制一条参考线段,然后使用POL命令的边模式捕捉这条线段的端点
改用中心点模式绘制多边形,这种方法与'cal计算通常没有兼容性问题
使用脚本或LISP程序预先计算并存储点坐标,然后在POL命令中调用 本帖最后由 guosheyang 于 2025-9-21 18:22 编辑
qifeifei 发表于 2025-9-21 11:09
解决方法有几种:
避免在POL命令中使用'cal透明计算,可以预先计算出精确坐标值直接输入
画直线的时候,[@1+1,0]表达式不会出错,多段线同样出错,正多边形和pl命令一样属于画多段线,必须是二维点,不需要z坐标的;
此例中,为何不直接输入@2,0 ?这样不是更直接?
或者 将正交或者 追踪打开 直接输入2 也可以
这个出错后,既然在命令行文本窗口会出现正确的点坐标,直接复制其xy值部分,不要复制0值到命令行,就可以接续画下去了。 另外,画图中间要临时用复杂计算时候,可以用qc的透明命令 个人认为更好些 guosheyang 发表于 2025-9-21 17:58
这个出错后,既然在命令行文本窗口会出现正确的点坐标,直接复制其xy值部分,不要复制0值到命令行,就可以 ...
该说不说。
UP主想探寻的是,为什么AutoCAD在上述操作后,它会有“二维点失效”这个报错。
也即,他想探寻CAD“报错‘“二维点失效’”产生的缘由。
而不是说,输入什么数据更快或更省事。 WWQQMM_KY 发表于 2025-9-21 22:07
该说不说。
UP主想探寻的是,为什么AutoCAD在上述操作后,它会有“二维点失效”这个报错。
也即,他想 ...
二维点失效也就是需要二维点 你计算出来是个三维点 多了一个z值,所以将文本窗口中产生的三维坐标值复制x和y值到命令行即可 这不是很清楚的事儿吗? guosheyang 发表于 2025-9-21 22:28
二维点失效也就是需要二维点 你计算出来是个三维点 多了一个z值,所以将文本窗口中产生的三维坐标 ...
那我就不懂了,如果你讲的“计算出来是个三维点 多了一个z值”说法成立,那怎么解释UP主说的--把“多边形”更换成“线段”或者是“多段线”,cad一样能计算出相同的坐标,但不会报错(二维点失效)“呢?
这其中的缘由是什么? 本帖最后由 guosheyang 于 2025-9-21 23:21 编辑
题主说的线段就是line命令画直线直线的坐标值是有z值的 题主说的更换成多段线 可以画出来但是我测试 用这个 [@1+1,0] 同样是 出错的提示 二维点错误。 轻量多段线的节点坐标没有z值 你要亲自去测试才会更清楚的:lol guosheyang 发表于 2025-9-21 23:19
题主说的线段就是line命令画直线直线的坐标值是有z值的 题主说的更换成多段线 可以画出来但是我 ...
你仔细看UP主说的那九个步骤:
1、画“多边形”,最后报错“二维点失效”;
2、同样的步骤,画“线段”或“多段线”,最后却不会报错“二维点失效”,一切正常;
3、我如果没有亲自测试,也冇工夫啰嗦这半天。
页:
[1]
2