乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 158|回复: 9

自己编写的一个LISP有问题!哪位帮忙解决一下

[复制链接]

22

主题

79

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
171
发表于 2004-1-1 21:20:00 | 显示全部楼层 |阅读模式
刚刚开始学习LISP,自己编写的一段小程序,但是在UCS旋转的时候会在找点的时候出错!哪位帮忙完善一下!
回复

使用道具 举报

22

主题

79

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
171
发表于 2004-1-1 21:21:00 | 显示全部楼层
文件在这里!
回复

使用道具 举报

22

主题

79

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
171
发表于 2004-1-1 21:24:00 | 显示全部楼层
文件怎么上传呀!传上海好像不可以下载吗?那就贴出来吧!(defun c:zz (/ pt_a pt_b pt_c pt_d 1_osmode a a1 f)
(setq 1_osmode (getvar "osmode"))
(setvar "osmode" 1)
(setq pt_a (getpoint "\nPlease input first point:\n"))
(setq pt_b (getpoint "\nPlease input second point:\n"))
(SETVAR "CMDECHO" 0)
;(PROMPT "\nEnter a Value:")
;(SETQ a (GETREAL))
;(setq s1 (distance pt_a pt_b))
;(setq s2 (/ s1 4))
;(setq s3 (/ s1 2))
;(setq s4 (/ s1 8))
  (setq a1
  (abs
  (sqrt
  (+
  (* (- (car pt_b)(car pt_a))(- (car pt_b)(car pt_a)))
  (* (- (cadr pt_b)(cadr pt_a))(- (cadr pt_b)(cadr pt_a)))
  )
  )
  )
  )
  (setq a (/ a1 4))
(setq f (getpoint))
(if(=(car pt_a)(car pt_b))
  (cond
    ((>(car f)(car pt_a))(setq a(* 1 a)))
    (((cadr f)(cadr pt_a))(setq a(* 1 a)))
    ((<(cadr f)(cadr pt_a))(setq a(* -1 a))))
  )
  
(if (=(car pt_a)(car pt_b))(setq pt_d(list(+(car pt_b) a)(cadr pt_b) 0))
                           (setq pt_d(list(car pt_b)(+(cadr pt_b) a)0)))
(setq pt_c(list(/(+(car pt_a)(car pt_d))2)(/(+(cadr pt_a)(cadr pt_d))2)))

;(if (=(car pt_A)(car pt_b))(setq pt_c(list(/(+(car pt_b)(car pt_d))2))(/(+(cadr pt_a)(cadr pt_b))2)0)
                           ;(setq pt_c(list(/(+(car pt_a)(car pt_b))2))(/(+(cadr pt_b)(cadr pt_d))2)0))
                           ;(setq pt_cx (/(+(car pt_a)(car pt_d))2))
                           ;(setq pt_cy (/(+(cadr pt_a)(cadr pt_b))2))
                           ;(setq pt_c (list pt_cx pt_cy 0))
(setvar "osmode" 0)
(COMMAND "LINE" pt_a pt_d "")
(COMMAND "LINE" pt_b pt_c "")
(setvar "osmode" 1_osmode)
(setq pt_a nil)
(setq pt_d nil)
(setq pt_b nil)
(setq pt_c nil)
)
回复

使用道具 举报

22

主题

79

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
171
发表于 2004-1-1 21:25:00 | 显示全部楼层
再试试!
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-1-2 09:15:00 | 显示全部楼层
你最好说说你程序的作用(而且出错是怎样出错也最好说出来),那样看起来会好些。。。
没仔细看,大致看出这几个问题:
两个getpoint的提示后面的\n不需要加
第三个getpoint应该加上提示
这两个问题不影响程序的运行,你可以不作修改。
你的SQRT及ABS那句有问题,SQRT返回的肯定是一个非负数,再用ABS没有必要,而里面的两个减号返回的值如果是负数,SQRT就回出错,所以这里才应该用ABS
回复

使用道具 举报

22

主题

79

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
171
发表于 2004-1-2 23:07:00 | 显示全部楼层
问题出在坐标系上,在特定的坐标下没有问题,比如90°、180°、270°,当坐标系旋转后就会出现pt_b和pt_c的位置计算错误!
估计是自己的算法有问题!主要是因为以前数学没学好的缘故吧!
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-1-3 11:39:00 | 显示全部楼层
主要问题没有回答:
你最好说说你程序的作用(而且出错是怎样出错也最好说出来),那样看起来会好些。。。
回复

使用道具 举报

22

主题

79

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
171
发表于 2004-1-3 22:51:00 | 显示全部楼层
程序的作用就是在两条平行的直线间画一个“人”字形,一共四个点,右上和右下两点由屏幕输入,另外两点通过计算得到!
现在只要当坐标系旋转的时候计算的两点就会算错!只能满足特定的角度!
不知道怎么贴图!不然就贴出来了!说不清楚呀!
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-1-3 22:58:00 | 显示全部楼层
写的内容上面有个文件上传,浏览你的图片,点上传,然后发表就可以贴图了
回复

使用道具 举报

22

主题

79

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
171
发表于 2004-1-3 23:00:00 | 显示全部楼层
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:hyfthwa3g35.dwg 
下载次数:0  文件大小:26.48 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]


上传的文件!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-8 00:36 , Processed in 0.931002 second(s), 77 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表