明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 605|回复: 12

[提问] 用lisp画连续直线为啥不完整

[复制链接]
发表于 2024-12-29 21:25:32 | 显示全部楼层 |阅读模式
本帖最后由 指尖 于 2024-12-29 21:26 编辑


      左侧为要完成的样子      右侧方块内为用程序画得效果图

哪位大神帮忙看一下程序哪里出问题了,感谢!!!!(程序见下面)


(defun c:mxt()
;(setq w (getreal "\n请输入箱体宽度:"))
;(setq h (getreal "\n请输入箱体高度:"))
;(setq d (getreal "\n请输入箱体深度:"))
    (setq p0 (getpoint "\n请确定起点"))
    (setq y (cadr p0))                           ;从点获取Y轴值
    (setq x (car p0))                            ;从点获取X轴值
    (setq p1 (list x y ))
    (setq p2 (list (- x 30) (+ y 30)))           ;30斜边
    (setq y1 (cadr p2))                          ;从点获取Y轴值
    (setq x1 (car p2))                           ;从点获取X轴值
    (setq p3 (list (- x1 17) (+ y1 0)))          ;17立
    (setq y2 (cadr p3))                          ;从点获取Y轴值
    (setq x2 (car p3))                           ;从点获取X轴值
    (setq p4 (list (- x2 10) (+ y2 10)))
    (setq y3 (cadr p4))                          ;从点获取Y轴值
    (setq x3 (car p4))                           ;从点获取X轴值
    (setq p5 (list (- x3 0) (+ y3 417)))
(command "LINE"  p1 p2  "")
(command "LINE"  p2 p3  "")
(command "LINE"  p3 p4  "")
(command "LINE"  p4 p5  ""))

;;;    (command "LINE"  p1 p2 p3 p4 p5 "")

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2024-12-30 23:25:09 | 显示全部楼层
  1. (defun c:tt ()
  2.   (setq p0 (getpoint "\n请确定起点"))
  3.   (setq p1 p0
  4.         x2 (- (car p1) 30)
  5.         y2 (+ (cadr p1) 30)
  6.         p2 (list x2 y2)
  7.         x3 (- x2 17)
  8.         y3 y2
  9.         p3 (list x3 y3)
  10.         x4 (- x3 10)
  11.         y4 (+ y3 10)
  12.         p4 (list x4 y4)
  13.         x5 x4
  14.         y5 (+ y4 417)
  15.         p5 (list x5 y5)
  16.   )
  17.   (setvar "osmode" 0)
  18.   (command "LINE" p1 p2 p3 p4 p5 "")
  19.   (princ)
  20. )
回复 支持 1 反对 0

使用道具 举报

发表于 2024-12-29 21:28:39 | 显示全部楼层
有可能是捕捉模式的关系
回复 支持 1 反对 0

使用道具 举报

发表于 2024-12-29 22:23:36 | 显示全部楼层
本帖最后由 llsheng_73 于 2024-12-29 22:25 编辑
指尖 发表于 2024-12-29 21:30
有什么方法可以解决吗,谢谢!

  1. (defun sk_osmode(flag)
  2.   (setvar "osmode"((if flag rem +)(rem(getvar "osmode")16384)16384))
  3.   )


  4. (defun c:tt(/ p)
  5.   (if(setq p(getpoint"指定起点"))
  6.     (progn
  7.       (SK_OSMODE nil)
  8.       (command"line"p"@-30,30""@-17,0""@-17,0""@-10,10""@0,417""")
  9.       (SK_OSMODE t))))


评分

参与人数 1金钱 +20 收起 理由
指尖 + 20

查看全部评分

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2024-12-29 21:30:27 | 显示全部楼层
Andyhon 发表于 2024-12-29 21:28
有可能是捕捉模式的关系

有什么方法可以解决吗,谢谢!

点评

SK_OSMODE  发表于 2024-12-30 07:54
回复 支持 反对

使用道具 举报

发表于 2024-12-30 09:14:27 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2024-12-30 15:49:29 | 显示全部楼层

老鸟呀,会用@和TK的很少见哦
回复 支持 反对

使用道具 举报

发表于 2024-12-30 16:12:32 | 显示全部楼层
chslwj521 发表于 2024-12-30 15:49
老鸟呀,会用@和TK的很少见哦

我自己没用过,因为极少画图,不过印象中有老鸟的帖子里边这么用过,说明CAD的命令行里边是支持相对于上一点的相对坐标的,看楼主计算一大堆,忽然想起这个事来了而已
回复 支持 反对

使用道具 举报

发表于 2024-12-30 16:20:14 | 显示全部楼层
llsheng_73 发表于 2024-12-30 16:12
我自己没用过,因为极少画图,不过印象中有老鸟的帖子里边这么用过,说明CAD的命令行里边是支持相对于上 ...

不错了,好多画的都不知道,@ tk for,有什么用,和区别呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-30 23:04:59 | 显示全部楼层

感谢大神指点迷津,对于我这个新手来说,思路却是有些单一了。
我会去按照您的思路再做一遍,
再次感谢您的指点。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-1-22 18:54 , Processed in 0.232386 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表