yangyangyixia 发表于 2024-12-29 18:16:48

【求助】求大佬给完善代码

现有一份在封闭曲线内绘制方格网的代码,求大佬给完善代码

需求:
1.绘制的方格网每隔4条线设置为一条黄色实线,中间4条设置为灰色虚线;
2.方格网左侧、下侧每隔4条线设置一个数字,数字以手动选取的交点为(0,0)原点。






edrise 发表于 2024-12-29 18:16:49

看你这个比较简单,练手顺手写了个糙的,可以实现你需要的功能,有币的话就给我吧,缺币中...
(defun c:tt (/ d xnum ynum pt0 x0 y0 m n x1 y1 x2 y2 pt3 x3 y3 x4 y4)
(setq d    (getreal "请输入网格间距")
      xnum (getint "请输入列数\n")
      ynum (getint "请输入行数\n")
      pt0(getpoint "请选取左下角点\n")
      x0   (car pt0)
      y0   (cadr pt0)
      m    (* xnum 5)
      n    (* ynum 5)
      x1   (+ x0 (* d m))
      y1   (+ y0 (* d n))
      x2   (+ x0 d)
      y2   (+ y0 d)
)
(entmake (list '(0 . "LINE") '(62 . 2) (append '(10) pt0) (list 11 x0 y1 0)))
(entmake (list '(0 . "LINE") '(62 . 2) (append '(10) pt0) (list 11 x1 y0 0)))
(repeat m
    (if (/= 0 (rem (- x2 x0) (* 5 d)))
      (entmake
      (list '(0 . "LINE")
            '(62 . 8)
            '(6 . "DASH")
            (list 10 x2 y0 0)
            (list 11 x2 y1 0)
      )
      )
      (entmake (list '(0 . "LINE") '(62 . 2) (list 10 x2 y0 0) (list 11 x2 y1 0)))
    )
    (setq x2 (+ d x2))
)
(repeat n
    (if (/= 0 (rem (- y2 y0) (* 5 d)))
      (entmake
      (list '(0 . "LINE")
            '(62 . 8)
            '(6 . "DASH")
            (list 10 x0 y2 0)
            (list 11 x1 y2 0)
      )
      )
      (entmake (list '(0 . "LINE") '(62 . 2) (list 10 x0 y2 0) (list 11 x1 y2 0)))
    )
    (setq y2 (+ d y2))
)
(setq pt3   (getpoint "请选择原点\n")
      x3      (car pt3)
      y3      (cadr pt3)
      x4      x0
      y4      y0
)
(repeat (1+ xnum)
    (entmake
      (list '(0 . "TEXT")
            '(10 0.0 0.0 0.0)
            (cons 40 d)
            (cons 1 (rtos (* 5 (/ (- x4 x3) d))))
            '(71 . 0)
            '(72 . 4)
            (list 11 x4 (- y0 d) 0.0)
      )
    )
    (setq x4 (+ x4 (* 5 d)))
)
(repeat (1+ ynum)
    (entmake
      (list '(0 . "TEXT")
            '(10 0.0 0.0 0.0)
            (cons 40 d)
            (cons 1 (rtos (* 5 (/ (- y4 y3) d))))
            '(71 . 0)
            '(72 . 4)
            (list 11 (- x0 d) y4 0.0)
      )
    )
    (setq y4 (+ y4 (* 5 d)))
)
(entmake (list '(0 . "LINE") '(62 . 3) (list 10 x3 y0 0) (list 11 x3 y1 0)))
(entmake (list '(0 . "LINE") '(62 . 3) (list 10 x0 y3 0) (list 11 x1 y3 0)))
(princ)
)

寒潮大冬瓜 发表于 2024-12-29 21:22:11

你直接到'e派工具箱'院长的群里求助更快更直接……

yangpingjun 发表于 2024-12-30 10:39:43

edrise 发表于 2024-12-30 03:55
看你这个比较简单,练手顺手写了个糙的,可以实现你需要的功能,有币的话就给我吧,缺币中...

大佬,使用你的代码,我的是这样的。没有中间纵横的四条灰线?:'(

edrise 发表于 2024-12-30 10:44:02

本帖最后由 edrise 于 2024-12-30 10:56 编辑

yangpingjun 发表于 2024-12-30 10:39
大佬,使用你的代码,我的是这样的。没有中间纵横的四条灰线?
纳尼?你生成一个然后把dwg发上来看看呢,我反复测试了都没问题

xj6019 发表于 2024-12-30 11:09:57

本帖最后由 xj6019 于 2025-1-2 09:40 编辑

好用不好用币都不要给我,我就是凑热闹的,把币留给需要的人

tangweinbs 发表于 2024-12-30 11:11:46

感谢分享,学习学习。

xj6019 发表于 2024-12-30 11:12:42

edrise 发表于 2024-12-30 10:44
纳尼?你生成一个然后把dwg发上来看看呢,我反复测试了都没问题

他没加载 DASH线型,你的代码里没自动判断加载的,所以就是他那样了没别的

edrise 发表于 2024-12-30 12:04:32

xj6019 发表于 2024-12-30 11:12
他没加载 DASH线型,你的代码里没自动判断加载的,所以就是他那样了没别的

原来如此,确实没想过这个,也暂时不会,如果是这样,把线型组码删了能将就用用:lol

edrise 发表于 2024-12-30 12:58:17

xj6019 发表于 2024-12-30 11:09
好用不好用币都不要给我,我就是凑热闹的,把币留给需要的人

大佬,你的插件加载报错是咋回事呢,CAD2021
页: [1] 2 3
查看完整版本: 【求助】求大佬给完善代码