77077 发表于 2015-12-11 11:39:33

CAD模拟PS笔刷工具。

这是一个雏形,欢迎大家一起来加强~~~
先上图~


上代码(defun c:tt(/ loop strar code)
(prompt "模拟画笔工具:左键开始,左键结束,右键完全退出画笔工具。")
(setq loop t);设定跳出while循环的标志
(setq strar 0);设定画笔不开始
(while loop
   (setq code (grread t 8))
   (cond
   ((and (= (car code) 3)(= strar 0)) ;;; 鼠标左键第一次点击,开始画笔
       (setq strar 1)
       (princ "\n 开始画>>")
      );end
   ((and (= (car code) 3)(= strar 1)) ;;; 鼠标左键第二次点击,结束画笔
       (setq strar 0)
       (princ "    >>结束了。")
   );end
    ((and (= (car code) 5) (= strar 1));;; 画笔开始时,鼠标移动。
      (entmake (list '(0 . "POINT") (cons 10 (cadr code))))
    );end
    ((= (car code) 11)   ;;; 右键完全退出画笔工具
      (setq loop nil)
      (princ "\n 你已经退出画笔工具。")
    );end
   );end cond
)
(princ)
);end defun最后上将来打算做成的样子~~~

天宇飞翔12 发表于 2021-11-27 12:12:01

加载出现 错误: DXF 组不正确: (10)啥原因

永不言弃 发表于 2021-11-28 19:29:13

这个不需要插件,这个命令好像能实现:SKETCH

donghuidong2003 发表于 2015-12-11 12:46:23

,这个东西好呀,给他们美术的搞绘画用

77077 发表于 2015-12-11 13:22:59

继续编写中~~~
(defun c:tt(/ loop strar code blkname dis pydis scal0 scal1 pt1 pt2)
(setq blkname (cdr(assoc 2(entget(car(entsel "\n选择图块:"))))))
(or(setq dis (getreal "\n最小间距<1.0>:"))(setq dis 1.0))
(or(setq pydis (getreal "\n两侧散布间距<0>:"))(setq PYdis 0.0))
(or(setq scal0 (getreal "\n大小抖动<0>:"))(setq scal0 0.0))
(prompt "模拟画笔工具:左键开始,左键结束,右键完全退出画笔工具。")
(setq loop t);设定跳出while循环的标志
(setq strar 0);设定画笔不开始
(while loop
   (setq code (grread t 8))
   (cond
   ((and (= (car code) 3)(= strar 0)) ;;; 鼠标左键第一次点击,开始画笔
       (setq pt1 (cadr code))
       (setq strar 1)
       (princ "\n 开始画>>")
      );end
   ((and (= (car code) 3)(= strar 1)) ;;; 鼠标左键第二次点击,结束画笔
       (setq strar 0)
       (princ "    >>结束了。")
   );end
    ((and (= (car code) 5) (= strar 1));;; 画笔开始时,鼠标移动。
      (setq pt2 (cadr code));基点
      (setq pt2 (polar
                   pt2
                   (* 2 pi (/ (rem (getvar "CPUTICKS") 1984) 1983));随机偏移角度
                   (* 2 PYdis (/ (rem (getvar "CPUTICKS") 1984) 1983));随机偏移距离
               )
         )
      (if (> (distance pt1 pt2) dis)
      (progn
          (if (= scal0 0)
            (setq scal1 1)
            (setq scal1 (* scal0 (/ (rem (getvar "CPUTICKS") 1984) 1983)));随机大小
            )
          (entmake (list
                        '(0 . "INSERT")
                        (cons 2 blkname)
                        (cons 10 pt2)
                        (cons 41 scal1)
                        (cons 42 scal1)
                        (cons 43 scal1)
                     )
               )
          (setq pt1 pt2)
         )
      )
    );end
    ((= (car code) 11)   ;;; 右键完全退出画笔工具
      (setq loop nil)
      (princ "\n 你已经退出画笔工具。")
    );end
   );end cond
)
(princ)
)

429014673 发表于 2015-12-11 15:25:32

生成一个组,后期处理方便

hoongdou 发表于 2015-12-14 12:09:27

厉害
。。。。。。。。。。。。

hbgsw 发表于 2015-12-14 16:51:30

功能不错。学习了。

辉哥哥 发表于 2015-12-15 13:56:36

感觉很好玩,支持……

lingduwx 发表于 2015-12-15 17:42:20

这个不错,有创意

死神去了 发表于 2015-12-17 07:59:47

感觉不错,可以直接签名了

bai2000 发表于 2015-12-17 12:20:34

最好设个专用图层或作为组,方便修改
页: [1] 2
查看完整版本: CAD模拟PS笔刷工具。