lihezhou 发表于 2015-1-22 19:17:29

不知道VB.net怎么做!

冒个烟圈 发表于 2015-6-15 21:10:11

终于找到了。。虽然目前以我的水平看不懂源码,但程序非常好用。谢谢楼主分享!!!

w245272914 发表于 2017-12-21 10:19:06

下载了就过来 顶贴人性化程序,不错赞个~

hawnn 发表于 2017-12-23 16:00:51

没错,这就是我一直在找的源码
收藏之,谢谢楼主

fangseng 发表于 2022-5-13 18:15:07

收藏之,谢谢楼主

langjs 发表于 2022-5-27 11:01:10

本帖最后由 langjs 于 2022-5-27 11:18 编辑

这个程序真好用,加入我的工具箱了。修改了一下,把幻灯片和对话框整合到sp里了

;;;; ****************************************************************
;;; *风之影粗糙度绘制,langjs修改
;;; ****************************************************************
(defun c:ccd (/ $value a ang b bname c code dcl_pt dcl_re dclname do dra drb edata ename era erb f kname llist loop myerr
                nearpnt olderr os p00 p1d p1u p2d p2u p3d p3u pcd pcu pqy prcs ptd ptu ra rb scl snappnt value x
             )
(defun do_list ()
    (start_list "RV" 1)
    (setq value (nth (atoi $value) llist))
    (end_list)
    (set_tile "error" (strcat "粗糙度为 Ra" value))
)
(defun myerr (msg)
    (command "undo" "e")
    (setvar "osmode" os)
    (entdel ename)
    (setq *error* olderr)
)
(defun image (a b c)
    (if (= a 0)
      (progn
        (start_image "RM")
        (fill_image 0 0 48 48 4)
        (vector_image 20 40 40 5 5)
        (vector_image 20 40 12 26 5)
        (vector_image 28 26 12 26 5)
        (vector_image 20 41 40 6 5)
        (vector_image 20 41 12 27 5)
        (vector_image 28 27 12 27 5)
        (end_image)
      )
      (progn
        (start_image "RM")
        (fill_image 0 0 48 48 5)
        (vector_image 20 40 40 5 7)
        (vector_image 20 40 12 26 7)
        (vector_image 28 26 12 26 7)
        (vector_image 20 41 40 6 7)
        (vector_image 20 41 12 27 7)
        (vector_image 28 27 12 27 7)
        (end_image)
      )
    )
    (if (= b 0)
      (progn
        (start_image "UN")
        (fill_image 0 0 48 48 4)
        (vector_image 20 40 40 5 5)
        (vector_image 20 40 12 26 5)
        (vector_image 20 41 40 6 5)
        (vector_image 20 41 12 27 5)
        (vector_image 18 26 23 26 5)
        (vector_image 17 27 18 27 5)
        (vector_image 23 27 24 27 5)
        (vector_image 16 28 17 28 5)
        (vector_image 24 28 25 28 5)
        (vector_image 16 29 16 32 5)
        (vector_image 25 29 25 32 5)
        (vector_image 16 33 17 33 5)
        (vector_image 24 33 25 33 5)
        (vector_image 17 34 18 34 5)
        (vector_image 23 34 24 34 5)
        (vector_image 18 35 23 35 5)
        (end_image)
      )
      (progn
        (start_image "UN")
        (fill_image 0 0 48 48 5)
        (vector_image 20 40 40 5 7)
        (vector_image 20 40 12 26 7)
        (vector_image 20 41 40 6 7)
        (vector_image 20 41 12 27 7)
        (vector_image 18 26 23 26 7)
        (vector_image 17 27 18 27 7)
        (vector_image 23 27 24 27 7)
        (vector_image 16 28 17 28 7)
        (vector_image 24 28 25 28 7)
        (vector_image 16 29 16 32 7)
        (vector_image 25 29 25 32 7)
        (vector_image 16 33 17 33 7)
        (vector_image 24 33 25 33 7)
        (vector_image 17 34 18 34 7)
        (vector_image 23 34 24 34 7)
        (vector_image 18 35 23 35 7)
        (end_image)
      )
    )
    (if (= c 0)
      (progn
        (start_image "BS")
        (fill_image 0 0 48 48 4)
        (vector_image 20 40 40 5 5)
        (vector_image 20 40 12 26 5)
        (vector_image 20 41 40 6 5)
        (vector_image 20 41 12 27 5)
        (end_image)
      )
      (progn
        (start_image "BS")
        (fill_image 0 0 48 48 5)
        (vector_image 20 40 40 5 7)
        (vector_image 20 40 12 26 7)
        (vector_image 20 41 40 6 7)
        (vector_image 20 41 12 27 7)
        (end_image)
      )
    )
)
(defun do_a ()
    (setq value (cadr (member value llist)))
    (if value
      (progn
        (refresh ra)
        (refresh rb)
      )
      (setq value "50")
    )
)
(defun do_s ()
    (setq value (cadr (member value (reverse llist))))
    (if value
      (progn
        (refresh ra)
        (refresh rb)
      )
      (setq value "")
    )
)
(defun refresh (bname / kname edata)
    (tblnext "block" t)
    (while (/= (cdr (assoc 2 (setq kname (tblnext "block")))) bname))
    (setq edata (entget (cdr (assoc -2 kname))))
    (entmod (subst
              (cons 1 value)
              (assoc 1 edata)
              edata
          )
    )
    (entupd ename)
)
(defun create_ra ()
    (entmake (list '(0 . "BLOCK") '(10 0 0 0) '(70 . 1) '(2 . "*U")))
    (entmake (list '(0 . "TEXT") (cons 10 p00) (cons 11 ptu) (cons 7 (getvar "DIMTXSTY")) '(8 . "DIM") '(40 . 2.5) '
                   (62 . 3) '(72 . 4) (cons 1 value)
             )
    )
    (cond
      ((= prcs 1)
        (entmake (list '(0 . "LINE") '(62 . 4) (cons 10 p1u) (cons 11 p2u) '(8 . "DIM")))
      )
      ((= prcs 2)
        (entmake (list '(0 . "CIRCLE") '(62 . 4) (cons 10 pcu) '(40 . 1.33) '(8 . "DIM")))
      )
    )
    (entmake (list '(0 . "LINE") '(62 . 4) (cons 10 p00) (cons 11 p2u) '(8 . "DIM")))
    (entmake (list '(0 . "LINE") '(62 . 4) (cons 10 p00) (cons 11 p3u) '(8 . "DIM")))
    (setq ra (entmake '((0 . "ENDBLK"))))
    (entmake (list '(0 . "INSERT") (cons 10 p00) (cons 41 scl) (cons 42 scl) (cons 2 ra)))
    (setq era (entlast))
    (setq dra (entget era))
)
(defun create_rb ()
    (entmake (list '(0 . "BLOCK") '(10 0 0 0) '(70 . 1) '(2 . "*U")))
    (entmake (list '(0 . "TEXT") (cons 10 p00) (cons 11 ptd) (cons 7 (getvar "DIMTXSTY")) '(8 . "DIM") '(40 . 2.5) '
                   (62 . 3) '(72 . 4) (cons 1 value)
             )
    )
    (cond
      ((= prcs 1)
        (entmake (list '(0 . "LINE") '(62 . 4) (cons 10 p1d) (cons 11 p2d) '(8 . "DIM")))
      )
      ((= prcs 2)
        (entmake (list '(0 . "CIRCLE") '(62 . 4) (cons 10 pcd) '(40 . 1.33) '(8 . "DIM")))
      )
    )
    (entmake (list '(0 . "LINE") '(62 . 4) (cons 10 p00) (cons 11 p2d) '(8 . "DIM")))
    (entmake (list '(0 . "LINE") '(62 . 4) (cons 10 p00) (cons 11 p3d) '(8 . "DIM")))
    (setq rb (entmake '((0 . "ENDBLK"))))
    (entmake (list '(0 . "INSERT") (cons 10 p00) (cons 41 scl) (cons 42 scl) (cons 2 rb)))
    (setq erb (entlast))
    (setq drb (entget erb))
)
(defun do_left ()
    (setq snappnt (cadr code))
    (entdel ename)
    (if (osnap snappnt "nea")
      (progn
        (entdel ename)
        (create_ra)
        (create_rb)
        (entdel erb)
        (setq ename era)
      )
      (progn
        (entdel ename)
        (setq dra (subst
                  (cons 50 0.0)
                  (assoc 50 dra)
                  dra
                  )
        )
        (setq dra (subst
                  (cons 41 (* 1.25 (cdr (assoc 41 dra))))
                  (assoc 41 dra)
                  dra
                  )
        )
        (setq dra (subst
                  (cons 42 (* 1.25 (cdr (assoc 42 dra))))
                  (assoc 42 dra)
                  dra
                  )
        )
        (entmod dra)
        (entmake (list '(0 . "TEXT") (cons 7 (getvar "DIMTXSTY")) '(8 . "DIM") '(10 0.0 0.0 0.0) (cons 40 (* scl 4.0))
                     (cons 41 0.8) '(62 . 3) '(72 . 4) (cons 11 (mapcar
                                                                  '+
                                                                  (mapcar
                                                                      (function (lambda (x)
                                                                                  (* scl x)
                                                                                )
                                                                      )
                                                                      pqy
                                                                  )
                                                                  snappnt
                                                                  )
                                                       ) '(1 . "其余")
               )
        )
        (setq loop nil)
      )
    )
)
(defun do_right ()
    (setq loop nil)
    (entdel ename)
)
(defun do_move ()
    (setq snappnt (cadr code))
    (entdel ename)
    (setq nearpnt (osnap snappnt "nea"))
    (if nearpnt
      (progn
        (setq ang (angle nearpnt snappnt))
        (cond
          ((and
             (>= ang (/ pi 6.0))
             (<= ang pi)
           )
          (setq ang (- ang (/ pi 2.0)))
          (entdel era)
          (setq ename era)
          (setq dra (subst
                        (cons 10 nearpnt)
                        (assoc 10 dra)
                        dra
                      )
          )
          (setq nearpnt nil)
          (setq dra (subst
                        (cons 50 ang)
                        (assoc 50 dra)
                        dra
                      )
          )
          (entmod dra)
          )
          ((or
             (= ang 0.0)
             (and
             (> ang (* (/ pi 6.0) 7.0))
             (< ang (* pi 2.0))
             )
           )
          (setq ang (+ ang (/ pi 2.0)))
          (entdel erb)
          (setq ename erb)
          (setq drb (subst
                        (cons 10 nearpnt)
                        (assoc 10 drb)
                        drb
                      )
          )
          (setq nearpnt nil)
          (setq drb (subst
                        (cons 50 ang)
                        (assoc 50 drb)
                        drb
                      )
          )
          (entmod drb)
          )
          (t
          (entdel era)
          (setq ename era)
          (setq nearpnt nil)
          )
        )
      )
      (progn
        (entdel era)
        (setq ename era)
        (setq dra (subst
                  (cons 10 snappnt)
                  (assoc 10 dra)
                  dra
                  )
        )
        (setq dra (subst
                  (cons 50 0.0)
                  (assoc 50 dra)
                  dra
                  )
        )
        (entmod dra)
        (setq nearpnt nil)
      )
    )
)
(setvar "cmdecho" 0)
(vl-load-com)
(setq os (getvar "osmode"))
(setq olderr *error*)
(setq *error* myerr)
(setvar "osmode" 0)
(command "undo" "be")
(setq scl (getvar "dimscale"))
(setq value "3.2")
(setq prcs 1)
(setq dclname (vl-filename-mktemp "rough.dcl")
        f (open dclname "w")
)
(write-line "roughness:dialog{ label=\"风之影粗糙度\"; spacer; " f)
(write-line " :row { :column {" f)
(write-line ":image_button { key = \"RM\"; aspect_ratio = 1; width = 8; fixed_width = true; color = graphics_background; allow_accept = true; }"
              f
)
(write-line ":image_button { key = \"UN\"; aspect_ratio = 1; width = 8; fixed_width = true; color = graphics_background; allow_accept = true; } "
              f
)
(write-line ":image_button { key = \"BS\"; aspect_ratio = 1; width = 8; fixed_width = true; color = graphics_background; allow_accept = true; } } "
              f
)
(write-line ":list_box { key=\"RV\"; value=8; width=16; height=14; allow_accept=true; } } " f)
(write-line ":errtile { width=18; } ok_cancel;}" f)
(close f)
(setq dcl_re (load_dialog dclname))
(new_dialog "roughness" dcl_re "" dcl_pt)
(setq llist '("" "0.025"
       "0.05" "0.1"
       "0.2" "0.4"
       "0.8" "1.6"
       "3.2" "6.3"
       "12.5" "25"
       "50"
        )
)
(start_list "RV")
(mapcar
    'add_list
    llist
)
(end_list)
(image 0 0 0)
(set_tile "RV" "8")
(set_tile "error" (strcat "粗糙度为 Ra3.2"))
(action_tile "RM" "(image 1 0 0) (setq prcs 1)")
(action_tile "UN" "(image 0 1 0)(setq prcs 2)")
(action_tile "BS" "(image 0 0 1)(setq prcs 0)")
(action_tile "RV" "(do_list)")
(action_tile "accept" "(done_dialog 1)(setq do T)")
(action_tile "cancel" "(done_dialog 0)")
(start_dialog)
(unload_dialog dcl_re)
(vl-file-delete dclname)
(if do
    (progn
      (setq p00 '(0.0 0.0 0.0))
      (setq p1u '(2.3094 4.0 0.0))
      (setq p2u '(-2.3094 4.0 0.0))
      (setq p3u '(5.7735 10.0 0.0))
      (setq pcu '(0.0 2.67 0.0))
      (setq ptu '(0.0 6.5 0.0))
      (setq p1d '(-2.3094 -4.0 0.0))
      (setq p2d '(2.3094 -4.0 0.0))
      (setq p3d '(-5.7735 -10.0 0.0))
      (setq pcd '(0.0 -2.67 0.0))
      (setq ptd '(0.0 -6.5 0.0))
      (setq pqy '(-9.0 3.0 0.0))
      (create_ra)
      (create_rb)
      (entdel erb)
      (prompt "\n选择插入点,增加,减小:")
      (setq ename era)
      (setq loop t)
      (while loop
        (setq code (grread t 15 0))
        (cond
          ((= (car code) 5)
          (do_move)
          )
          ((= (car code) 3)
          (do_left)
          )
          ((or
             (= (car code) 11)
             (= (car code) 25)
           )
          (do_right)
          )
          ((or
             (equal code '(2 97))
             (equal code' (2 65))
           )
          (do_a)
          )
          ((or
             (equal code '(2 115))
             (equal code' (2 83))
           )
          (do_s)
          )
        )
      )
    )
)
(setvar "osmode" os)
(command "undo" "e")
(setq *error* olderr)
(princ)
)

ninja37 发表于 2022-5-27 11:24:16

楼主的工具 总是那么实用都是精品

白色微風1991 发表于 2022-5-27 17:38:31

支持,收藏,學習。

zhangyan_0320 发表于 2022-7-31 08:02:51

支持支持,太好用了

xzd716 发表于 2022-9-24 20:37:00

非常好用!谢谢分享
页: 1 2 [3] 4
查看完整版本: [源码]动态粗糙度