hlzhong 发表于 2003-5-30 12:35:00

将(245.576 38.0151 -54.2912)如何转化处理才能...

将(245.576 38.0151 -54.2912)如何转化处理才能带入到下列语句中的p1处,并让该lisp语句成功执行。
(command "line" p1 '(0 0 0) "")

meflying 发表于 2003-5-30 12:43:00

(setq p1 '(245.576 38.0151 -54.2912))

hlzhong 发表于 2003-5-31 17:16:00

如果(245.576 38.0151 -54.2912)为前面一lisp程序返回的结果

如果(245.576 38.0151 -54.2912)为前面一lisp程序返回的结果,即表中的数值

可能是变的,那么如何处理才能将该表作为一个点表带入到语句(command "move" p1 '(0 0 0) "")中执行(p1处)?
前面的返回该点表的lisp程序为:
.........
(car (vl-sort PT_LIST '(lambda (z1 z2)(< (caddr z1)(caddr z2)))))


好像我按下面的方法处理不行,:(
(setq A (car (vl-sort PT_LIST '(lambda (z1 z2)(< (caddr z1)(caddr

z2))))))
(command "move" 'A '(0 0 0) "")

说白了,我就是想将一个实体从点A移到原点(至于A点则不是定点,每次执行前面的程序返回的点表可能都不一样)

Ea 发表于 2003-5-31 22:59:00

A 前面不要 ' (撇)

hlzhong 发表于 2003-6-1 09:36:00

下面的程序A前面不要 ' 也不行啊

下面的程序A前面不要 ' 也不行啊,程序执行时不认为A是移动的基点。
.........
(setq A (car (vl-sort PT_LIST '(lambda (z1 z2)(< (caddr z1)(caddr

z2))))))
(command "move" 'A '(0 0 0) "")

meflying 发表于 2003-6-2 08:52:00

那肯定是(setq A ...)语句出错,把你的Z值给出来看看,

hlzhong 发表于 2003-6-3 08:26:00

(245.576 38.0151 -54.2912)就是某一次运行返回的结果。。

(245.576 38.0151 -54.2912)就是某一次运行返回的结果,其实就是(car (vl-sort PT_LIST '(lambda (z1 z2)(< (caddr z1)(caddr z2)))))运行返回的结果。至于(lambda (z1 z2)(< (caddr z1)(caddr z2)))中的z值则是互相比较的变量,看谁最小而已。其实程序的目的就是:搜索图形中的哪个点最靠后(z值最小),再以此点为基点将图形移到原点。真不知(command "move" 'A '(0 0 0) "")中'A的格式是否出错,导致CAD认不出移动的基点。

meflying 发表于 2003-6-3 08:34:00

'A只表示符号A,而不是变量A,所以不用加',还有你的MOVE命令中没有实体名,不知

'A只表示符号A,而不是变量A,所以不用加',还有你的MOVE命令中没有实体名,不知道要MOVE谁

hlzhong 发表于 2003-6-3 16:16:00

上面的语句改为:(command "move" "all" A '(0 0 0) "") 还是不行啊

上面的语句改为:(command "move" "all" A'(0 0 0) "") 还是不行啊,不知CAD中是否A代换为(245.576 38.0151 -54.2912)后与 '(0 0 0)的格式不一致而不能执行呢?

meflying 发表于 2003-6-3 18:18:00

应该这样,(command "move" "all" "" 'A '(0 0 0)),你说的那两个格式是完

应该这样,(command "move" "all" "" 'A'(0 0 0)),你说的那两个格式是完全一样的
页: [1] 2
查看完整版本: 将(245.576 38.0151 -54.2912)如何转化处理才能...