hzh2000 发表于 2009-7-21 20:03:00

如何自定义UCS坐标的表达方式?

如何建立自定义表达方式的UCS. 例如,想建立这样一个UCS, 原点在WCS的原点上,Y、Z方向按WCS表述,X方向按肋位号表示。如:肋位为0-100,每档肋位间距500mm,这样,相对于WCS的点(6000,1200,3000)按此UCS方法表示就是(FR12,1200,3000).
我的问题就是能否建立上述坐标系,可以自定义坐标的表达方式。如在画直线命令时,以(FR12,1200,3000)的形式输入点坐标,而不是(6000,1200,3000)。不知道能否实现。望达者解惑,等待...

雪山飞狐_lzh 发表于 2009-7-21 20:42:00

没想到太好的方法
可以尝试用事件处理,但可能很难实现
或者用Lisp函数处理
比如先声明一个Lisp函数FR计算X坐标
(list (FR 12) 1200 3000)
或者定义一个Lisp函数,返回值是点坐标
调用
(mylispfunc "fr12,1200,3000")

hzh2000 发表于 2009-7-22 13:06:00

如果是lisp函数,就无法在所有命令中使用,我的意思是转换坐标输入表达方式,所以要内嵌入所有命令中。

雪山飞狐_lzh 发表于 2009-7-22 15:38:00


你试过么?

hzh2000 发表于 2009-7-23 12:49:00

自己写的程序当然可以调用这个自定义函数,但是,其他程序如ACAD命令、其他应用程序怎么去调用?除非每个命令重新定义,这个不现实。

雪山飞狐_lzh 发表于 2009-7-23 15:50:00

命令: _line 指定第一点: (list 0 0 0)
(0 0 0)
指定下一点或 [放弃(U)]: (list 100 100 0)
(100 100 0)
指定下一点或 [放弃(U)]:

hzh2000 发表于 2009-7-23 19:54:00

试过了,选用的是先定义一个函数(defun fr( x y z / ))的形式,如下:
命令: _line 指定第一点: (fr 0 0 0)
(0 0 0)
指定下一点或 [放弃(U)]: (fr 5 100 0)
(3000 100 0)
指定下一点或 [放弃(U)]:
不过需要输括号,与点坐标的输入方式不一样,有点不方便。最好能变成如下方式就方便了:
命令: _line 指定第一点: fr 0,0,0
(0 0 0)
指定下一点或 [放弃(U)]: fr 5,100,0
(3000 100 0)
指定下一点或 [放弃(U)]:
谢谢版主指点。
页: [1]
查看完整版本: 如何自定义UCS坐标的表达方式?