jimpcfd 发表于 2022-7-6 09:19:48

需要脚本中圆弧的帮助

大家好,我决定在这里发布这个,并在脚本中发布了它,Renderman建议使用Lisp例程可能是更好的方式。
这是我最初的帖子。。。
你好
我要创建一个包含弧的脚本,我从文本文件cvs格式中获取弧数据,看起来像是=弧的开始190,0弧的结束200,10弧的中心190,10,你可以看到它是10mm半径,我认为这些是绝对测量值。
 
我不确定脚本中3 pt弧的格式?
 
他的是完整的规格
 
五十、 0,10,0190
A、 190,0200,10190,10,1
五十、 200,10200,90A
A、 200,90190100190,90,1
五十、 190100,10100
A、 10100,0,90,10,90,1
五十、 0,90,0,10
A、 0,10,10,0,10,10,1
 
 
l=直线起点x,起点y,终点x,终点y。
 
A=弧起点x,起点y,终点x,终点y,中心,中心y。
1表示逆时针方向,0表示顺时针方向
 
干杯
jimpcfd

Lee Mac 发表于 2022-7-6 09:45:03

你是在写LISP程序还是脚本?

jimpcfd 发表于 2022-7-6 09:57:44

 
嗨,李,我试着做一个脚本文件,线没有问题,但弧有问题,尝试了3pt弧,这似乎非常类似于CSV文件,但没有运气。
因此,也许lisp例程可以完成这项工作。
 
 
干杯
吉姆

David Bethel 发表于 2022-7-6 10:18:03

可能是这样:
 
(defun c:测试(/file rf data nl p1 p2 ce sp ep)(而(不是文件)(setq文件(如果csv\U文件=GREEN](GetField“CSV File to Read”CSV_File“CSV”2(getfield“CSV File to Read”“”“CSV”2(setq csv_文件)(setq rf(打开文件“r”)((读取线rf)(setq数据(cons(db_sds2l,“nl)数据(/color关闭rf)(对于每个e数据(cond((=“L”nth 0 e)(entmake(cons 0“LINE”(列表10(atof(nth 1 e)(atof b](nth 2 e))0)[//color(列表11(atof(nth 3 e)(atof(nth 4 e)颜色((“A”(nth 0 e)(setq p1(list(atof((atof(nth 2 e)]0]p2(atof(nth 3 e)atof(nth 4 e0ce(list(atof(nth 5 e)atof(nth 6 e=紫色)0sp(if(minssp(atoi(nth 7 e))ep(if(减去p(atoi(nth 7 e)p1 p2(entmake(listcons 0#2f4f4f]“弧”(cons 10 ce)(cons 40(距离ce sp)(cons 50(角度ce sp)(cons 51(angle ce ep]]]](prin1)[/颜色[颜色=#8b4513];;;要列出的分隔字符串;;;ARG->单分隔符字符,要转换的字符串;;;RET->List or nil(defun db\u sds2l(d s/sl f sv dlist slist)(setq sl(strlen s)f 0(setq dlist(List 0)(而(

jimpcfd 发表于 2022-7-6 10:28:20

谢谢David
这是一个完美的工作,作为一个Lisp程序的初学者,我可以看到一些例程正在做什么,但我必须说,其中一些是我目前无法做到的。
 
再次感谢
吉姆
页: [1]
查看完整版本: 需要脚本中圆弧的帮助