试试这个:
- (defun tst5 (val / objts objt_length strt_pt pts valA fn f)
- (vl-load-com)
- (cond ((and
- (setq objts (car (entsel)))
- (setq
- objt_length
- (vlax-curve-getDistAtParam
- objts
- (vlax-curve-getEndParam (vlax-ename->vla-object objts))))
- (setq strt_pt (vlax-curve-getStartPoint objts))
- (setq
- pts (list strt_pt)
- valA val)
- (repeat (fix (/ objt_length val))
- (setq
- pts (cons (vlax-curve-getPointAtDist objts val) pts)
- val (+ val valA)))
- (setq pts (reverse (cons (vlax-curve-getendpoint objts) pts)))
- (if (not
- (setq
- fn
- (getfiled "Export to file" (getvar "dwgprefix") "csv" 1)))
- (alert "No file selected!")
- (progn
- (setq f (open fn "a"))
- (foreach
- pt pts
- (write-line
- (strcat (rtos (car pt)) "," (rtos (cadr pt) 2 4))
- f))
- (close f)
- (alert (strcat "Finish export points to file: " fn))))
- )
- )
- )
- (princ)
- )
你发布的代码中有很多错误的括号和函数:
这次您不需要使用vl princ来字符串来写入值,因为您没有编写列表。
[这就是我们一开始这么做的原因]
通过这样做
(写入行
(strcat(vl princ to string(car pt))”,“(vl princ to string(cadr pt)))f)
结果将是
A列B列
2.32328e+007 1.45359e+008
而这个
(写入行(strcat(rtos(car pt))”,“(rtos(cadr pt)2 4))f)
会给你
A列B列
23232768.8310 145358905.9378
我想你应该做的是,在你的例行程序中做一个条件来检查实体类型,线/线/弧/椭圆,并为每个条件分配一组变量
这样你只需要写一个代码 |