将(245.576 38.0151 -54.2912)如何转化处理才能...
将(245.576 38.0151 -54.2912)如何转化处理才能带入到下列语句中的p1处,并让该lisp语句成功执行。(command "line" p1 '(0 0 0) "")
(setq p1 '(245.576 38.0151 -54.2912))
如果(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点则不是定点,每次执行前面的程序返回的点表可能都不一样)
A 前面不要 ' (撇)
下面的程序A前面不要 ' 也不行啊
下面的程序A前面不要 ' 也不行啊,程序执行时不认为A是移动的基点。.........
(setq A (car (vl-sort PT_LIST '(lambda (z1 z2)(< (caddr z1)(caddr
z2))))))
(command "move" 'A '(0 0 0) "")
那肯定是(setq A ...)语句出错,把你的Z值给出来看看,
(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认不出移动的基点。'A只表示符号A,而不是变量A,所以不用加',还有你的MOVE命令中没有实体名,不知
'A只表示符号A,而不是变量A,所以不用加',还有你的MOVE命令中没有实体名,不知道要MOVE谁上面的语句改为:(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)的格式不一致而不能执行呢?应该这样,(command "move" "all" "" 'A '(0 0 0)),你说的那两个格式是完
应该这样,(command "move" "all" "" 'A'(0 0 0)),你说的那两个格式是完全一样的
页:
[1]
2