level 1
喵ci0
楼主
我是第一次接触autolisp,这只是看书上的代码,出了问题不太会解决![[不高兴]](/static/emoticons/u4e0du9ad8u5174.png)
有没有大神可以帮我看看
代码如下:
(defun pp()
;近似参数
(setq Ao (-(*(- y1 y2)(- z1 z3))(*(- y1 y3)(- z1 z2))))
(setq Bo (-(*(- x1 x3)(- z1 z2))(*(- x1 x2)(- z1 z3))))
(setq Co (-(*(- x1 x2)(- y1 y3))(*(- x1 x3)(- y1 y2))))
(setq Do (*(+(* x1 Ao)(* y1 Bo)(* z1 Co))- 1))
(setq A'(/ Ao Do)B'(/ Bo Do)C'(/ Co Do))
)
(defun c:mp()
(setq file1(getfiled "\n 输入数据文件" "c:/" "txt"8)) ;打开文件
(setq f1(open file1 "r"))
(setq m(read(read-line f1)))
(setq zbj nil)
(setq i 0)
;读取文件,构造新表---坐标集
(repeat m
(setq line(read-line f1))
(setq x (atof(substr line 1 6))zbj(cons x zbj))
(setq y (atof(substr line 7 6))zbj(cons y zbj))
(setq z (atof(substr line 13 6))zbj(cons z zbj))
(setq pt(list x y z))
;画测定点位
(command "layer" "m" "point" "c" 1 "" "") ;建立图层设定线条颜色
(command "pdmode" 34 "") ;点式样
(command "pdsize" 0.5 "a" "") ;点长宽
(command "point" pt "")
(command "view" "seiso" "") ;东南正轴测投影
(command "zoom" "e" "") ;全局视图
)
(setq zbj(reverse zbj))
(prin1 zbj)
;选p1、p2、 p3点作为初始平面,计算平面参数近似值
(setq x1(nth 0 zbj) y1(nth 1 zbj) z1(nth 2 zbj) p1(list x1 y1 z1))
(setq x2(nth 3 zbj) y2(nth 4 zbj) z2(nth 5 zbj) p2(list x2 y2 z2))
(setq x3(nth 6 zbj) y3(nth 6 zbj) z3(nth 8 zbj) p3(list x3 y3 z3))
(pp)
(setq i 1 aa 0 bb 0 cc 0 ab 0 bc 0 ac 0 al 0 bl 0 cl 0)
(repeat m
(setq j(* (- i 1)3))
(setq xi(nth j zbj) yi(nth (+ j 1)zbj) zi(nth(+ j 2)zbj))
(setq L(+ (* A' xi)(* B' yi)(* C' zi)1))
(setq aa(+ aa(* xi xi)) bb(+ bb(* yi yi)) cc(+ cc(* zi zi)) ab(+ ab(* xi yi)) bc(+ bc(* yi zi)) ac(+ ac(* xi zi))) ;系数
(setq al(+ al(* xi L)) bl(+ bl(* yi L)) cl(+ cl(* zi L))) ;常数项
(setq i(+ 1 i))
)
)
2016年04月10日 10点04分
1
有没有大神可以帮我看看
代码如下:
(defun pp()
;近似参数
(setq Ao (-(*(- y1 y2)(- z1 z3))(*(- y1 y3)(- z1 z2))))
(setq Bo (-(*(- x1 x3)(- z1 z2))(*(- x1 x2)(- z1 z3))))
(setq Co (-(*(- x1 x2)(- y1 y3))(*(- x1 x3)(- y1 y2))))
(setq Do (*(+(* x1 Ao)(* y1 Bo)(* z1 Co))- 1))
(setq A'(/ Ao Do)B'(/ Bo Do)C'(/ Co Do))
)
(defun c:mp()
(setq file1(getfiled "\n 输入数据文件" "c:/" "txt"8)) ;打开文件
(setq f1(open file1 "r"))
(setq m(read(read-line f1)))
(setq zbj nil)
(setq i 0)
;读取文件,构造新表---坐标集
(repeat m
(setq line(read-line f1))
(setq x (atof(substr line 1 6))zbj(cons x zbj))
(setq y (atof(substr line 7 6))zbj(cons y zbj))
(setq z (atof(substr line 13 6))zbj(cons z zbj))
(setq pt(list x y z))
;画测定点位
(command "layer" "m" "point" "c" 1 "" "") ;建立图层设定线条颜色
(command "pdmode" 34 "") ;点式样
(command "pdsize" 0.5 "a" "") ;点长宽
(command "point" pt "")
(command "view" "seiso" "") ;东南正轴测投影
(command "zoom" "e" "") ;全局视图
)
(setq zbj(reverse zbj))
(prin1 zbj)
;选p1、p2、 p3点作为初始平面,计算平面参数近似值
(setq x1(nth 0 zbj) y1(nth 1 zbj) z1(nth 2 zbj) p1(list x1 y1 z1))
(setq x2(nth 3 zbj) y2(nth 4 zbj) z2(nth 5 zbj) p2(list x2 y2 z2))
(setq x3(nth 6 zbj) y3(nth 6 zbj) z3(nth 8 zbj) p3(list x3 y3 z3))
(pp)
(setq i 1 aa 0 bb 0 cc 0 ab 0 bc 0 ac 0 al 0 bl 0 cl 0)
(repeat m
(setq j(* (- i 1)3))
(setq xi(nth j zbj) yi(nth (+ j 1)zbj) zi(nth(+ j 2)zbj))
(setq L(+ (* A' xi)(* B' yi)(* C' zi)1))
(setq aa(+ aa(* xi xi)) bb(+ bb(* yi yi)) cc(+ cc(* zi zi)) ab(+ ab(* xi yi)) bc(+ bc(* yi zi)) ac(+ ac(* xi zi))) ;系数
(setq al(+ al(* xi L)) bl(+ bl(* yi L)) cl(+ cl(* zi L))) ;常数项
(setq i(+ 1 i))
)
)