qq_41874203 2024-10-27 15:10 采纳率: 100%
浏览 18
已结题

请教,这是用chatgpt写的CAD LISPD脚本,需求是画一个由双直线组成的矩形

请教,这是用chatgpt写的CAD LISP脚本,需求是画一个由双直线组成的矩形
类似这样,

img

每次画的矩形大小都有我手动输入长宽。
现在用chatgpt写的脚本出现的是重合的双线,没有间隔7毫米

(defun c:QW (/ length width pt1 pt2 pt3 pt4 pt1-inner pt2-inner pt3-inner pt4-inner offset)
  (setq length (getreal "\n请输入矩形的长度: "))
  (setq width (getreal "\n请输入矩形的宽度: "))
  
  (setq pt1 (getpoint "\n输入矩形的左下角点: "))
  
  (setq offset 7) ; 间隔设置为7mm
  
  ;; 计算矩形的四个顶点
  (setq pt2 (list (car pt1) (+ (cadr pt1) width)))
  (setq pt3 (list (+ (car pt1) length) (+ (cadr pt1) width)))
  (setq pt4 (list (+ (car pt1) length) (cadr pt1)))

  ;; 绘制外边框的四条线
  (command "line" pt1 pt2 "")
  (command "line" pt2 pt3 "")
  (command "line" pt3 pt4 "")
  (command "line" pt4 pt1 "")
  
  ;; 计算内边框的四个顶点,向内偏移7mm
  (setq pt1-inner (list (+ (car pt1) offset) (+ (cadr pt1) offset)))
  (setq pt2-inner (list (+ (car pt2) offset) (+ (cadr pt2) offset)))
  (setq pt3-inner (list (+ (car pt3) (- offset)) (+ (cadr pt3) (- offset))))
  (setq pt4-inner (list (+ (car pt4) (- offset)) (+ (cadr pt4) offset)))

  ;; 绘制内边框的四条线
  (command "line" pt1-inner pt2-inner "")
  (command "line" pt2-inner pt3-inner "")
  (command "line" pt3-inner pt4-inner "")
  (command "line" pt4-inner pt1-inner "")
  
  (princ)
)

(princ "\n输入命令 'QW' 来绘制间隔7mm的双线矩形。")


  • 写回答

21条回答 默认 最新

  • WMXC_x7 2024-10-27 19:13
    关注

    你好,我改了一下代码其中一处错误,运行起来没问题,
    但是原代码我这边测试没有重合而是内框左上角的点跑到外面去了
    你可以看看是不是其他地方有问题还是
    我先发一下代码,在评论里补一张图片(图片要一段时间才加载)
    我用的参数是
    100
    100
    0,0

    (defun c:QW (/ length width pt1 pt2 pt3 pt4 pt1-inner pt2-inner pt3-inner pt4-inner offset)
      (setq length (getreal "\n请输入矩形的长度: "))
      (setq width (getreal "\n请输入矩形的宽度: "))
      
      (setq pt1 (getpoint "\n输入矩形的左下角点: "))
      
      (setq offset 7) ; 间隔设置为7mm
      
      ;; 计算矩形的四个顶点
      (setq pt2 (list (car pt1) (+ (cadr pt1) width)))
      (setq pt3 (list (+ (car pt1) length) (+ (cadr pt1) width)))
      (setq pt4 (list (+ (car pt1) length) (cadr pt1)))
     
      ;; 绘制外边框的四条线
      (command "line" pt1 pt2 "")
      (command "line" pt2 pt3 "")
      (command "line" pt3 pt4 "")
      (command "line" pt4 pt1 "")
      
      ;; 计算内边框的四个顶点,向内偏移7mm
      (setq pt1-inner (list (+ (car pt1) offset) (+ (cadr pt1) offset)))
      (setq pt2-inner (list (+ (car pt2) offset) (+ (cadr pt2) (- offset))))
      (setq pt3-inner (list (+ (car pt3) (- offset)) (+ (cadr pt3) (- offset))))
      (setq pt4-inner (list (+ (car pt4) (- offset)) (+ (cadr pt4) offset)))
     
      ;; 绘制内边框的四条线
      (command "line" pt1-inner pt2-inner "")
      (command "line" pt2-inner pt3-inner "")
      (command "line" pt3-inner pt4-inner "")
      (command "line" pt4-inner pt1-inner "")
      
      (princ)
    )
     
    (princ "\n输入命令 'QW' 来绘制间隔7mm的双线矩形。")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(20条)

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 创建了问题 10月27日