坐标转换、主函数调用子函数的相关讨论
本帖最后由 zzl9105 于 2018-5-27 12:13 编辑主函数调用子函数,主函数这样调用它:(setq ptb (Q-UCS-PT_LIST ptb))
ptb为点坐标表集,是多个点坐标的集合。
子函数格式按下面写法:子函数功能是 转换wcs下的坐标点集ptb到ucs下的坐标点集pt_list,UCS坐标系统是WCS绕Z轴旋转90度。
(defun Q-UCS-PT_LIST (/ pt_list)
(if (ssget '((0 . "TEXT")(8 . "旋转90度")))
(progn
(command "ucs""z""90")
(setq pt_listnil) ;先定义为空集
(foreach pt ptb
(setq pt_list (cons pt_list '(trans pt 0 1)))
)
(setq Xmin (car (car pt_list)))
(setq Ymin (cadr (car pt_list)))
(foreach pt ptb
(if (>= Xmin (car pt)) (setq Xmin (car pt)))
(if (>= Ymin (cadr pt)) (setq Ymin (cadr pt)))
)
(command "ucs"" ")
pt_list
)
)
)
调用没有成功,不知道是子函数没有写成功,还是主函数调用子函数的格式不对,
请高手指点,谢谢!
就比如 你的这个函数,我稍作补充,修改
(defun c:主函数名 ()
(setq ptb1 点列表1);获得ptb1
(setq ptb2 点列表2);获得ptb2
(setq pt_list1 (Q-UCS-PT_LIST ptb1 ));用子函数 调用主函数的ptb1处理获得pt_list1
(setq pt_list2 (Q-UCS-PT_LIST ptb2 ));用子函数 调用主函数的ptb2处理获得pt_list2
)
(defun Q-UCS-PT_LIST (ptb / pt_list);这边加一个参数ptb
(if (ssget '((0 . "TEXT")(8 . "旋转90度")))
(progn
(command "ucs""z""90")
(setq pt_listnil) ;先定义为空集
(foreach pt ptb
(setq pt_list (cons pt_list '(trans pt 0 1)))
)
(setq Xmin (car (car pt_list)))
(setq Ymin (cadr (car pt_list)))
(foreach pt ptb
(if (>= Xmin (car pt)) (setq Xmin (car pt)))
(if (>= Ymin (cadr pt)) (setq Ymin (cadr pt)))
)
(command "ucs"" ")
pt_list
)
)
)
zzl9105 发表于 2018-5-28 11:00
需要一个主要格式,子函数为处理任何一表的功能,主函数为调用这一子函数,用来处理多个坐标表集,如多个表 ...
其实你写这么长看起来,理解起来真有点累;这个子函数,说白了就是你自己定义一个函数,用法类似于cad已有的函数;比如先定义子函数(defun 子函数名 (参数A 参数B 参数C / 变量 A ...) 对参数A 参数B 参数C三个参数的“计算”得出结果A);然后调用的时候就需要 (子函数名 参数A 参数B 参数C)这种格式来调用,其中参数ABC一个都不能少,也不能多,最后输出 结果A。 ptb是什么???? (defun Q-UCS-PT_LIST (ptb/ pt_list) (defun Q-UCS-PT_LIST (ptb/ pt_list) qyming 发表于 2018-5-27 11:26
(defun Q-UCS-PT_LIST (ptb/ pt_list)
主函数有两个地主需要调整这个子函数,一个地方是定义了ptb地方,别一个地方是ptb2。那我子函数的全局函数,需要定义两个么,即ptb,ptb2么? 调用子函数格式不对,子函数(defun Q-UCS-PT_LIST (/ pt_list)这个是无参数的(/前面为参数),调用格式就是( Q-UCS-PT_LIST),带参数时(defun Q-UCS-PT_LIST (参数1 参数2 / pt_list)...调用格式就是( Q-UCS-PT_LIST 参数1 参数2) 本帖最后由 zzl9105 于 2018-5-28 09:23 编辑
gdslqs 发表于 2018-5-27 12:40
调用子函数格式不对,子函数(defun Q-UCS-PT_LIST (/ pt_list)这个是无参数的(/前面为参数),调用格式就是( ...
主函数有ptb和ptb2坐标点集(多点坐标)需要处理,无参数能将处理对象处理成功么?不带对象,子函数能识别处理对象吗?还是需要在子函数中定义好参数1,参数2?参数1、2就是子函数的(全局坐标)要处理的主函数目标对象,是么? 需要一个主要格式,子函数为处理任何一表的功能,主函数为调用这一子函数,用来处理多个坐标表集,如多个表ptb1,ptb2,ptb3等,这个主子函数的全局变量和局部变更,应该如何定义,子函数中的表达式,如何才知道它能够接力主函数中的处理对象进行处理呢,因为子函数中的一个目标处理对象,需要对应主函数中的多个目标对象。请大牛指点一下,谢谢了!!!
页:
[1]
2