论坛首页    职业区    学术与写作    工程技术区    软件区    资料区    商务合作区    社区办公室
 您好! 欢迎 登录注册 最新帖子 邀请注册 活动聚焦 统计排行 社区服务 帮助
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
  • 2571阅读
  • 2回复

一个lisp程序,总是提示“输入的列表有缺陷”,大家帮忙看看 [复制链接]

上一主题 下一主题
离线279499185
 

发帖
93
土币
211
威望
524
原创币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2012-11-18
我是个新手,刚开始子程序的编写,就出现这个问题了。各位大侠帮忙解决下。。。。。。
(defun c:mianji()
(get-data)
(area3)
(prin1)
)
(defun get-data()
(setq en1 (entsel "选择直线a"))
(setq en2 (entsel "\n选择直线b"))
(setq en3 (entsel "\n选择直线c"))
  (setq en1-data (entget (car en1)))
;获取a起点坐标
  (setq p1ts (assoc 10 en1-data))
  (setq p1t1 (cdr p1ts))
  (setq p1tx1 (car p1t1))
  (setq p1ty1 (cadr p1t1))
;获取a终点坐标
  (setq p1te (assoc 11 en1-data))
  (setq p1e1 (cdr p1te))
  (setq p1ex2 (car p1e1))
  (setq p1ey2 (cadr p1e1))
(setq a (sqrt (+ (* (- p1tx1 p1ex2) (- p1tx1 p1ex2)) (* (- p1ty1 p1ey2) (- p1ty1 p1ey2)))))
  (setq en2-data (entget (car en2)))
;获取b起点坐标
  (setq p2ts (assoc 10 en2-data))
  (setq p2t1 (cdr p2ts))
  (setq p2tx1 (car p2t1))
  (setq p2ty1 (cadr p2t1))
;获取b终点坐标
  (setq p2te (assoc 11 en2-data))
  (setq p2e1 (cdr p2te))
  (setq p2ex2 (car p2e1))
  (setq p2ey2 (cadr p2e1))
(setq b (sqrt (+ (* (- p2tx1 p2ex2) (- p2tx1 p2ex2)) (* (- p2ty1 p2ey2) (- p2ty1 p2ey2)))))
  (setq en3-data (entget (car en3)))
;获取c起点坐标
  (setq p3ts (assoc 10 en3-data))
  (setq p3t1 (cdr p3ts))
  (setq p3tx1 (car p3t1))
  (setq p3ty1 (cadr p3t1))
;获取c终点坐标
  (setq p3te (assoc 11 en3-data))
  (setq p3e1 (cdr p3te))
  (setq p3ex2 (car p3e1))
  (setq p3ey2 (cadr p3e1))
(setq c (sqrt (+ (* (- p3tx1 p3ex2) (- p3tx1 p3ex2)) (* (- p3ty1 p3ey2) (- p3ty1 p3ey2)))))
)
(defun area3 ()
(setq s (* (+ a (+ b c)) 0.5))
(setq sum (sqrt (* s (* (- s a) (* (- s b) (- s c))))))
(alter (strcat "总面积为"(itoa sum)))
)
123
离线jrcza

发帖
130
土币
101430
威望
13
原创币
0
只看该作者 1楼 发表于: 2020-03-31
稍微改动了下成功运行,你有可能是括号英文未切换造成的
(defun c:mianji()
(get-data)
(area3)
(prin1)
)
(defun get-data()
(setq en1 (entsel "选择直线a"))
(setq en2 (entsel "\n选择直线b"))
(setq en3 (entsel "\n选择直线c"))
  (setq en1-data (entget (car en1)))
;获取a起点坐标
  (setq p1ts (assoc 10 en1-data))
  (setq p1t1 (cdr p1ts))
  (setq p1tx1 (car p1t1))
  (setq p1ty1 (cadr p1t1))
;获取a终点坐标
  (setq p1te (assoc 11 en1-data))
  (setq p1e1 (cdr p1te))
  (setq p1ex2 (car p1e1))
  (setq p1ey2 (cadr p1e1))
(setq a (sqrt (+ (* (- p1tx1 p1ex2) (- p1tx1 p1ex2)) (* (- p1ty1 p1ey2) (- p1ty1 p1ey2)))))
  (setq en2-data (entget (car en2)))
;获取b起点坐标
  (setq p2ts (assoc 10 en2-data))
  (setq p2t1 (cdr p2ts))
  (setq p2tx1 (car p2t1))
  (setq p2ty1 (cadr p2t1))
;获取b终点坐标
  (setq p2te (assoc 11 en2-data))
  (setq p2e1 (cdr p2te))
  (setq p2ex2 (car p2e1))
  (setq p2ey2 (cadr p2e1))
(setq b (sqrt (+ (* (- p2tx1 p2ex2) (- p2tx1 p2ex2)) (* (- p2ty1 p2ey2) (- p2ty1 p2ey2)))))
  (setq en3-data (entget (car en3)))
;获取c起点坐标
  (setq p3ts (assoc 10 en3-data))
  (setq p3t1 (cdr p3ts))
  (setq p3tx1 (car p3t1))
  (setq p3ty1 (cadr p3t1))
;获取c终点坐标
  (setq p3te (assoc 11 en3-data))
  (setq p3e1 (cdr p3te))
  (setq p3ex2 (car p3e1))
  (setq p3ey2 (cadr p3e1))
(setq c (sqrt (+ (* (- p3tx1 p3ex2) (- p3tx1 p3ex2)) (* (- p3ty1 p3ey2) (- p3ty1 p3ey2)))))
)
(defun area3()
(setq s (* (+ a (+ b c)) 0.5))
(setq sum (sqrt (* s (* (- s a) (* (- s b) (- s c))))))
(princ  "总面积=" )(princ sum)
)
热爱岩土事业!
离线magiclaowang

发帖
188
土币
20
威望
0
原创币
0
只看该作者 2楼 发表于: 2020-04-25
    
快速回复
限100 字节
温馨提示:欢迎交流讨论,请勿纯表情、纯引用!
 
上一个 下一个

      浙公网安备 33010602003799号 浙ICP备14021682号-1

      工业和信息化部备案管理系统网站