试试这个:
(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-objectobjts))))
(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
ptpts
(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
我想你应该做的是,在你的例行程序中做一个条件来检查实体类型,线/线/弧/椭圆,并为每个条件分配一组变量
这样你只需要写一个代码 哇,非常感谢。那真是太好了。。。你一点一点地引导着我,尽管我对AutoLISP一无所知。这对我来说意义重大。我不知道如何报答你。我想我在某种程度上精通C、CPP和java等编程语言。。。如果有关于编程的事情,我可以提供一些帮助。再次感谢pBe。
页:
1
[2]