找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4521|回复: 31

[每日一码] 竖线改变

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-8-21 09:09:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 /db_自贡黄明儒_ 于 2014-8-21 13:39 编辑

因工作需要,我写了个处理竖线的程序,使用起来不爽....
;;***********************************************************竖线缩放
;;竖线画好后,由于基础为200高,这些线批量缩,故写这程序 黄明儒 2014.6.13
(defun C:HHVL (/ CMD1 E KEY KEY1 N NUM OSM1 P PE PS SS)
  ;;1 错误处理
  (defun *error* (msg)
    (while (not (equal (getvar "cmdnames") "")) (command nil))
    (cond (osm1 (setvar "osmode" osm1)))
    (princ "\n 出错啦!")
    (princ)
  )

  (vl-load-com)
  (or *DOC*
      (setq *DOC* (vla-get-ActiveDocument (vlax-get-acad-object)))
  )
;; (_StartUndo *DOC*)
  (setq cmd1 (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (initget "Total DElta")
  (setq key (getkword "\n竖线改变[保证总长(T)/端头缩减(DE)]:<T>"))
  (cond ((not key) (setq key "Total")))
  (initget "Up Down")
  (setq key1 (getkword "\n缩减竖线[上部(U)/下部(D)]:<U>"))
  (cond ((not key1) (setq key1 "Up")))
  (initget 1)
  (cond        ((equal key "Total") (setq Num (getreal "\n 总长为:")))
        (T (setq Num (getreal "\n /端头缩减:")))
  )
  (while (setq ss (ssget ":S" '((0 . "*LINE"))))
    (repeat (setq n (sslength ss))
      (setq e (ssname ss (setq n (1- n))))
      (setq Ps (vlax-curve-getStartPoint e))
      (setq Pe (vlax-curve-getEndPoint e))
      (cond
        ((> (cadr Ps) (cadr Pe))
         (cond
           ((equal key1 "Up") (setq p Ps))
           (T (setq p pe))
         )
        )
        (T
         (cond
           ((equal key1 "Up") (setq p pe))
           (T (setq p Ps))
         )
        )
      )
      (command "_.LENGTHEN" key Num (list e p) "")
    )
  )  
  (setvar "cmdecho" cmd1)
;; (_EndUndo *DOC*)
  (gc)
  (princ)
)
;;***********************************************************竖线缩放
1.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-8-21 09:37:17 | 显示全部楼层
因工作需要,我写了个处理竖线的程序,使用起来不爽....
使用起来不爽?什么意思?不爽还发出来啊,哈哈

点评

黄大师挖苦我了,究竟哪里不爽,说出来啊,论坛自有高人会帮忙的!  详情 回复 发表于 2014-8-21 12:11
让你改一下呀。。。。  发表于 2014-8-21 10:39
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-8-21 12:11:09 | 显示全部楼层
lucas3 发表于 2014-8-21 09:37
使用起来不爽?什么意思?不爽还发出来啊,哈哈

黄大师挖苦我了,究竟哪里不爽,说出来啊,论坛自有高人会帮忙的!

点评

言重了,你也太谦虚,贴出的目的在于相互学习。  发表于 2014-8-21 12:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-21 15:49:28 | 显示全部楼层
本帖最后由 Free-Lancer 于 2014-8-21 15:50 编辑

练习练习 DCL
  1. (defun c:tt (/ id k1 k2 k3 k4 ChangeLine ShowDCL ss key1 key2 lst)
  2.   (defun ChangeLine (lst len / p1 p2)
  3.     (foreach ln        lst
  4.       (mapcar 'set
  5.               '(p1 p2)
  6.               (vl-sort (list (vlax-curve-getstartpoint ln)
  7.                              (vlax-curve-getendpoint ln)
  8.                        )
  9.                        '(lambda (x1 x2) (< (cadr x1) (cadr x2)))
  10.               )
  11.       )
  12.       (if (= key2 "k3") ;_Up
  13.         (if (= key1 "k1") ;_Totle
  14.           (setq p2 (polar p1 _pi2 len))
  15.           (setq p2 (polar p2 _pi2 len))
  16.         )
  17.         ;;Down
  18.         (if (= key1 "k1")
  19.           (setq p1 (polar p2 _3pi len))
  20.           (setq p1 (polar p1 _3pi len))
  21.         )
  22.       )
  23.       (if (wcmatch (vla-get-objectname ln) "AcDbLine")
  24.         (progn
  25.           (vlax-put ln 'StartPoint p1)
  26.           (vlax-put ln 'EndPoint p2)
  27.         )
  28.         (vlax-put ln
  29.                   'Coordinates
  30.                   (list (car p1) (cadr p1) (car p2) (cadr p2))
  31.         )
  32.       )
  33.     )
  34.   )
  35.   (defun showdcl (lst / strl next d len fn id)
  36.     (setq strl '("sxsj:dialog {                     "
  37.                  "    label = \"竖线缩减\" ;        "
  38.                  "    :column {                     "
  39.                  "        :row {                    "
  40.                  "        :boxed_radio_row {        "
  41.                  "            label = \"模式\" ;    "
  42.                  "            :radio_button {       "
  43.                  "               key = \"k1\" ;     "
  44.                  "                label = \"总长\" ;"
  45.                  "            }                     "
  46.                  "            :radio_button {       "
  47.                  "               key = \"k2\" ;     "
  48.                  "                label = \"端头\" ;"
  49.                  "            }                     "
  50.                  "            }                     "
  51.                  "        :boxed_radio_row {        "
  52.                  "           label = \"选项\";      "
  53.                  "            :radio_button {       "
  54.                  "                key = \"k3\" ;    "
  55.                  "                label = \"上部\" ;"
  56.                  "            }                     "
  57.                  "            :radio_button {       "
  58.                  "                key = \"k4\" ;    "
  59.                  "                label = \"下部\" ;"
  60.                  "            }                     "
  61.                  "        }                         "
  62.                  "        }                         "
  63.                  "        :boxed_row {              "
  64.                  "            label = \"数量\" ;    "
  65.                  "            :edit_box {           "
  66.                  "                key = \"len\" ;   "
  67.                  "                label = \"长度\" ;"
  68.                  "            }                     "
  69.                  "            :button {             "
  70.                  "                key = \"pick\" ;  "
  71.                  "                label = \"拾取\" ;"
  72.                  "            }                     "
  73.                  "        }                         "
  74.                  "    }                             "
  75.                  "    ok_only;                      "
  76.                  "    errtile;                      "
  77.                  "}                                 "
  78.                 )
  79.           fn   (dcl:make strl)
  80.           next 2
  81.           key1 "k1"
  82.           key2 "k3"
  83.     )
  84.     (while (> next 1)
  85.       (setq id (dcl:load fn "sxsj"))
  86.       (if d
  87.         (set_tile "len" (vl-princ-to-string d))
  88.       )
  89.       (dcl:radioinit '("k1" "k2") key1)
  90.       (dcl:radioinit '("k3" "k4") key2)
  91.       (dcl:radioaction '("k1" "k2") key1)
  92.       (dcl:radioaction '("k3" "k4") key2)
  93.       (action_tile "len" "(dcl:checkin $value \"数值\" \"len\")")
  94.       (action_tile
  95.         "pick"
  96.         "(setq key1 (dcl:radiostatus '(\"k1\" \"k2\"))) (setq key2 (dcl:radiostatus '(\"k3\" \"k4\")))(done_dialog 6)"
  97.       )
  98.       (action_tile
  99.         "accept"
  100.         "(setq len (distof (get_tile \"len\")))(setq next 0)(done_dialog 0)(changeline lst len)"
  101.       )
  102.       (setq next (start_dialog))
  103.       (if (= next 6)
  104.         (setq d (getdist "\nDist: "))
  105.       )
  106.     )
  107.     (unload_dialog id) ;_卸载对话框
  108.     (vl-file-delete fn) ;_删除DCL文件
  109.     (princ)
  110.   )
  111.   (fy:begin)
  112.   (if (and (setq ss (ssget '((-4 . "<or")
  113.                              (0 . "line")
  114.                              (-4 . "<and")
  115.                              (0 . "*Polyline")
  116.                              (90 . 2)
  117.                              (-4 . "and>")
  118.                              (-4 . "or>")
  119.                             )
  120.                     )
  121.            )
  122.            (setq lst
  123.                   (vl-remove-if-not
  124.                     '(lambda (x / sp ep)
  125.                        (setq sp        (vlax-curve-getstartpoint x)
  126.                              ep        (vlax-curve-getendpoint x)
  127.                        )
  128.                        (or (equal (angle sp ep) _pi2 1e-3)
  129.                            (equal (angle sp ep) _3pi 1e-3)
  130.                        )
  131.                      )
  132.                     (fy:cset->objs)
  133.                   )
  134.            )
  135.       )
  136.     (showdcl lst)
  137.   )
  138.   (princ)
  139. )
20140821154859.jpg

点评

Free-Lancer大师,您好!请问下面这个对话框要写入到lisp当中去,要怎样去做?  详情 回复 发表于 2014-8-21 19:30

评分

参与人数 2D豆 +10 收起 理由
lucas3 + 5 很给力!经验;技术要点;资料分享奖!
/db_自贡黄明儒_ + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-8-21 19:30:23 | 显示全部楼层
本帖最后由 lucas3 于 2014-8-21 19:42 编辑

Free-Lancer大师,您好!请问下面这个对话框要写入到lisp当中去,要怎样去做?
  1. roughness
  2. :dialog{ label="粗糙度";
  3. spacer;
  4. :row{
  5.   :column{
  6.    :image_button{ key = "RM"; aspect_ratio = 1; width = 8; fixed_width = true; color = -2; allow_accept = true; }
  7.    :image_button{ key = "UN"; aspect_ratio = 1; width = 8; fixed_width = true; color = -2; allow_accept = true; }
  8.    :image_button{ key = "BS"; aspect_ratio = 1; width = 8; fixed_width = true; color = -2; allow_accept = true; }
  9.   }
  10.   :list_box{ key="RV"; value=8; width=16; height=14; allow_accept=true; }
  11. }
  12. :row{
  13.   :errtile{ width= 14; }
  14.   :edit_box{ label = "比例:"; key = "SC"; edit_width = 3; }
  15. }
  16. ok_cancel;
  17. }


我用这个DCL2LSP转换
  1. (defun c:dcl2lsp ( / fname1 fn1 fname2 fn2 k fn1l fn2l )
  2.   (setq fname1 (getfiled "Select DCL file" "" "dcl" 16))
  3.   (setq fn1 (open fname1 "r"))
  4.   (setq fname2 (getfiled "File to save" "" "lsp" 1))
  5.   (setq fn2 (open fname2 "w"))
  6.   (while (setq fn1l (read-line fn1))
  7.     (setq fn2l fn1l)
  8.     (setq k 0)
  9.     (while (setq k (vl-string-search "\"" fn2l k))
  10.       (setq fn2l (vl-string-subst "\\\"" "\"" fn2l k))
  11.       (setq k (+ k 2))
  12.     )
  13.     (setq fn2l (strcat "(write-line \"" fn2l "\" fn)"))
  14.     (write-line fn2l fn2)
  15.   )
  16.   (close fn1)
  17.   (close fn2)
  18.   (princ)
  19. )


转换后是这样的
  1. (write-line "roughness" fn)
  2. (write-line ":dialog{ label=\"粗糙度\";" fn)
  3. (write-line " spacer;" fn)
  4. (write-line " :row{" fn)
  5. (write-line "  :column{" fn)
  6. (write-line "   :image_button{ key = \"RM\"; aspect_ratio = 1; width = 8; fixed_width = true; color = -2; allow_accept = true; }" fn)
  7. (write-line "   :image_button{ key = \"UN\"; aspect_ratio = 1; width = 8; fixed_width = true; color = -2; allow_accept = true; }" fn)
  8. (write-line "   :image_button{ key = \"BS\"; aspect_ratio = 1; width = 8; fixed_width = true; color = -2; allow_accept = true; }" fn)
  9. (write-line "  }" fn)
  10. (write-line "  :list_box{ key=\"RV\"; value=8; width=16; height=14; allow_accept=true; }" fn)
  11. (write-line " }" fn)
  12. (write-line " :row{" fn)
  13. (write-line "  :errtile{ width= 14; }" fn)
  14. (write-line "  :edit_box{ label = \"比例:\"; key = \"SC\"; edit_width = 3; }" fn)
  15. (write-line " }" fn)
  16. (write-line " ok_cancel;" fn)
  17. (write-line "}" fn)


那如何使用呢?

点评

这个dcl2lsp好像只是说明一个方法, 可以这样改改 使用时将生成的Lisp拷贝到程序中作为一个子函数,然后这样使用  详情 回复 发表于 2014-8-21 21:10
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-21 21:10:13 | 显示全部楼层
lucas3 发表于 2014-8-21 19:30
Free-Lancer大师,您好!请问下面这个对话框要写入到lisp当中去,要怎样去做?

这个dcl2lsp好像只是说明一个方法, 可以这样改改
  1. (defun c:dcl2lsp (/ fname1 fn1 fname2 fn2 k fn1l fn2l)
  2.   (setq fname1 (getfiled "Select DCL file" "" "dcl" 16))
  3.   (setq fn1 (open fname1 "r"))
  4.   (setq fname2 (getfiled "File to save" "" "lsp" 1))
  5.   (setq fn2 (open fname2 "w"))
  6.   (write-line "(defun writedcl (fn)" fn2);_增加个函数定义
  7.   (while (setq fn1l (read-line fn1))
  8.     (setq fn2l fn1l)
  9.     (setq k 0)
  10.     (while (setq k (vl-string-search "\"" fn2l k))
  11.       (setq fn2l (vl-string-subst "\\\"" "\"" fn2l k))
  12.       (setq k (+ k 2))
  13.     )
  14.     (setq fn2l (strcat "(write-line \"" fn2l "\" fn)"))
  15.     (write-line fn2l fn2)
  16.   )
  17.   (write-line ")" fn2)
  18.   (close fn1)
  19.   (close fn2)
  20.   (princ)
  21. )

使用时将生成的Lisp拷贝到程序中作为一个子函数,然后这样使用
  1. (setq fl (vl-filename-mktemp (strcat "FYDCL" ".dcl"))
  2.       fn (open fl "w")
  3. )
  4. (writedcl fn);_执行函数写出 临时DCL
  5. (close fn)

点评

谢谢大师指点,只是程序中有 不知怎么调用,大师能帮忙改改吗?  详情 回复 发表于 2014-8-22 10:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-8-22 10:28:52 | 显示全部楼层
Free-Lancer 发表于 2014-8-21 21:10
这个dcl2lsp好像只是说明一个方法, 可以这样改改

使用时将生成的Lisp拷贝到程序中作为一个子函数,然 ...

谢谢大师指点,只是程序中有
  1.   (setq DLG_ID (load_dialog "rough.dcl"))
  2.   (new_dialog "roughness" DLG_ID)

不知怎么调用,大师能帮忙改改吗?


  1. ;;http://bbs.mjtd.com/thread-91278-1-1.html
  2. ;;by cabinsummer
  3. (defun c:rough(/ scl value prcs DLG_ID llist
  4.                p1u p2u p3u pcu ptu pqy
  5.                p1d p2d p3d pcd ptd
  6.                ename era erb dra drb
  7.                snappnt nearpnt tag code ang
  8.                max_x max_y do p00 ra rb
  9.               )
  10.   (defun do_list()
  11.     (start_list "RV" 1)
  12.     (setq value (nth (atoi $value) llist))
  13.     (end_list)
  14.     (set_tile "error" (strcat "粗糙度为 Ra" value))
  15.   )
  16.   (defun myerr(msg)
  17.     (command "undo" "e")
  18.     (setvar "osmode" os)
  19.     (entdel ename)
  20.     (setq *error* olderr)
  21.   )
  22.   (setvar "cmdecho" 0)
  23.   (setq os (getvar "osmode"))
  24.   (setq olderr *error*)
  25.   (setq *error* myerr)
  26.   (setvar "osmode" 0)
  27.   (command "undo" "be")
  28.   (setq scl (getvar "dimscale"))
  29.   (setq value "3.2")
  30.   (setq prcs 1)
  31.   (setq DLG_ID (load_dialog "rough.dcl"))
  32.   (new_dialog "roughness" DLG_ID)
  33.   (start_image "RM")
  34.   (setq max_x (dimx_tile "RM") max_y (dimy_tile "RM"))
  35.   (slide_image 5 5 (- max_x 10) (- max_y 10) (strcat (findfile "rough.slb") "(RM)"))
  36.   (end_image)
  37.   (start_image "UN")
  38.   (setq max_x (dimx_tile "UN") max_y (dimy_tile "UN"))
  39.   (slide_image 5 5 (- max_x 10) (- max_y 10) (strcat (findfile "rough.slb") "(UN)"))
  40.   (end_image)
  41.   (start_image "BS")
  42.   (setq max_x (dimx_tile "BS") max_y (dimy_tile "BS"))
  43.   (slide_image 5 5 (- max_x 10) (- max_y 10) (strcat (findfile "rough.slb") "(BS)"))
  44.   (end_image)
  45.   (setq llist '("" "0.025" "0.05" "0.1" "0.2" "0.4" "0.8" "1.6" "3.2" "6.3" "12.5" "25" "50"))
  46.   (start_list "RV")
  47.   (mapcar 'add_list llist)
  48.   (end_list)
  49.   (set_tile "RV" "8")
  50.   (set_tile "error" (strcat "粗糙度为 Ra3.2"))
  51.   (action_tile "RM" "(setq prcs 1)")
  52.   (action_tile "UN" "(setq prcs 2)")
  53.   (action_tile "BS" "(setq prcs 0)")
  54.   (action_tile "RV" "(do_list)")
  55.   (action_tile "accept" "(done_dialog 1)(setq do T)")
  56.   (action_tile "cancel" "(done_dialog 0)")
  57.   (start_dialog)
  58.   (unload_dialog DLG_ID)
  59.   (if do
  60.     (progn
  61.       (setq p00 '(0.0 0.0 0.0))
  62.       (setq p1u '(2.3094 4.0 0.0))
  63.       (setq p2u '(-2.3094 4.0 0.0))
  64.       (setq p3u '(5.7735 10.0 0.0))
  65.       (setq pcu '(0.0 2.67 0.0))
  66.       (setq ptu '(0.0 6.5 0.0))
  67.       (setq p1d '(-2.3094 -4.0 0.0))
  68.       (setq p2d '(2.3094 -4.0 0.0))
  69.       (setq p3d '(-5.7735 -10.0 0.0))
  70.       (setq pcd '(0.0 -2.67 0.0))
  71.       (setq ptd '(0.0 -6.5 0.0))
  72.       (setq pqy '(-12.0 3.0 0.0))
  73.       (create_ra)
  74.       (create_rb)
  75.       (entdel erb)
  76.       (prompt "选择插入点")
  77.       (setq ename era)
  78.       (setq loop T)
  79.       (while loop
  80.         (setq code (grread T 8))
  81.         (cond
  82.           ((= (car code) 5)(do_move))
  83.           ((= (car code) 3)(do_left))
  84.           ((or (= (car code) 11)(= (car code) 25))(do_right))
  85.           ((or (equal code '(2 97))(equal code'(2 65)))(do_a))
  86.           ((or (equal code '(2 115))(equal code'(2 83)))(do_s))
  87.         )
  88.       )
  89.     )
  90.   )
  91.   (setvar "osmode" os)
  92.   (command "undo" "e")
  93.   (setq *error* olderr)
  94.   (princ)
  95. )
  96. (defun do_a()
  97.   (setq value (cadr (member value llist)))
  98.   (if value (progn (refresh ra)(refresh rb))(setq value "50"))
  99. )
  100. (defun do_s()
  101.   (setq value (cadr (member value (reverse llist))))
  102.   (if value (progn (refresh ra)(refresh rb))(setq value ""))
  103. )
  104. (defun refresh(bname / kname edata)
  105.   (tblnext "block" T)
  106.   (while (/= (cdr (assoc 2 (setq kname (tblnext "block")))) bname))
  107.   (setq edata (entget (cdr (assoc -2 kname))))
  108.   (entmod (subst (cons 1 value)(assoc 1 edata) edata))
  109.   (entupd ename)
  110. )
  111. (defun create_ra()
  112.   (entmake (list '(0 . "BLOCK")'(10 0 0 0)'(70 . 1)'(2 . "*U")))
  113.   (entmake (list '(0 . "TEXT")(cons 10 p00)(cons 11 ptu)'(8 . "DIM")'(40 . 2.5)'(62 . 3)'(72 . 4)(cons 1 value)))
  114.   (cond
  115.     ((= prcs 1)(entmake (list '(0 . "LINE")(cons 10 p1u)(cons 11 p2u)'(8 . "DIM"))))
  116.     ((= prcs 2)(entmake (list '(0 . "CIRCLE")(cons 10 pcu)'(40 . 1.33)'(8 . "DIM"))))
  117.   )
  118.   (entmake (list '(0 . "LINE")(cons 10 p00)(cons 11 p2u)'(8 . "DIM")))
  119.   (entmake (list '(0 . "LINE")(cons 10 p00)(cons 11 p3u)'(8 . "DIM")))
  120.   (setq ra (entmake '((0 . "ENDBLK"))))
  121.   (entmake (list '(0 . "INSERT")(cons 10 p00)(cons 41 scl)(cons 42 scl)(cons 2 ra)))
  122.   (setq era (entlast))
  123.   (setq dra (entget era))
  124. )
  125. (defun create_rb()
  126.   (entmake (list '(0 . "BLOCK")'(10 0 0 0)'(70 . 1)'(2 . "*U")))
  127.   (entmake (list '(0 . "TEXT")(cons 10 p00)(cons 11 ptd)'(8 . "DIM")'(40 . 2.5)'(62 . 3)'(72 . 4)(cons 1 value)))
  128.   (cond
  129.     ((= prcs 1)(entmake (list '(0 . "LINE")(cons 10 p1d)(cons 11 p2d)'(8 . "DIM"))))
  130.     ((= prcs 2)(entmake (list '(0 . "CIRCLE")(cons 10 pcd)'(40 . 1.33)'(8 . "DIM"))))
  131.   )
  132.   (entmake (list '(0 . "LINE")(cons 10 p00)(cons 11 p2d)'(8 . "DIM")))
  133.   (entmake (list '(0 . "LINE")(cons 10 p00)(cons 11 p3d)'(8 . "DIM")))
  134.   (setq rb (entmake '((0 . "ENDBLK"))))
  135.   (entmake (list '(0 . "INSERT")(cons 10 p00)(cons 41 scl)(cons 42 scl)(cons 2 rb)))
  136.   (setq erb (entlast))
  137.   (setq drb (entget erb))
  138. )
  139. (defun do_left()
  140.   (setq snappnt (cadr code))
  141.   (entdel ename)
  142.   (if (osnap snappnt "nea")
  143.     (progn
  144.       (entdel ename)
  145.       (create_ra)
  146.       (create_rb)
  147.       (entdel erb)
  148.       (setq ename era)
  149.     )
  150.     (progn
  151.       (entdel ename)
  152.       (setq dra (subst (cons 50 0.0)(assoc 50 dra) dra))
  153.       (setq dra (subst (cons 41 (* 1.25 (cdr (assoc 41 dra))))(assoc 41 dra) dra))
  154.       (setq dra (subst (cons 42 (* 1.25 (cdr (assoc 42 dra))))(assoc 42 dra) dra))
  155.       (entmod dra)
  156.       (entmake (list '(0 . "TEXT")'(8 . "DIM")'(10 0.0 0.0 0.0)(cons 40 (* scl 5.0))'(62 . 3)'(72 . 4)(cons 11 (mapcar '+ (mapcar (function (lambda (x)(* scl x))) pqy) snappnt))'(1 . "其余")))
  157.       (setq loop nil)
  158.     )
  159.   )
  160. )
  161. (defun do_right()
  162.   (setq loop nil)
  163.   (entdel ename)
  164. )
  165. (defun do_move()
  166.   (setq snappnt (cadr code))
  167.   (entdel ename)
  168.   (setq nearpnt (osnap snappnt "nea"))
  169.   (if nearpnt
  170.     (progn
  171.       (setq ang (angle nearpnt snappnt))
  172.       (cond
  173.         (
  174.           (and (>= ang (/ pi 6.0))(<= ang pi))
  175.           (setq ang (- ang (/ pi 2.0)))
  176.           (entdel era)
  177.           (setq ename era)
  178.           (setq dra (subst (cons 10 nearpnt)(assoc 10 dra) dra))
  179.           (setq nearpnt nil)
  180.           (setq dra (subst (cons 50 ang)(assoc 50 dra) dra))
  181.           (entmod dra)
  182.         )
  183.         (
  184.           (or (= ang 0.0)(and (> ang (* (/ pi 6.0) 7.0))(< ang (* pi 2.0))))
  185.           (setq ang (+ ang (/ pi 2.0)))
  186.           (entdel erb)
  187.           (setq ename erb)
  188.           (setq drb (subst (cons 10 nearpnt)(assoc 10 drb) drb))
  189.           (setq nearpnt nil)
  190.           (setq drb (subst (cons 50 ang)(assoc 50 drb) drb))
  191.           (entmod drb)
  192.         )
  193.         (T
  194.           (entdel era)
  195.           (setq ename era)
  196.           (setq nearpnt nil)
  197.         )
  198.       )
  199.     )
  200.     (progn
  201.       (entdel era)
  202.       (setq ename era)
  203.       (setq dra (subst (cons 10 snappnt)(assoc 10 dra) dra))
  204.       (setq dra (subst (cons 50 0.0)(assoc 50 dra) dra))
  205.       (entmod dra)
  206.       (setq nearpnt nil)
  207.     )
  208.   )
  209. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-22 11:04:49 | 显示全部楼层
需要 DCL 在 Support  路径

点评

一般用lisp写的对话框不是在temp文件夹吗?越来越搞不懂了,您能拿上面这个程序改一下吗?  详情 回复 发表于 2014-8-22 12:37
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-8-22 12:37:22 | 显示全部楼层
Free-Lancer 发表于 2014-8-22 11:04
需要 DCL 在 Support  路径

一般用lisp写的对话框不是在temp文件夹吗?越来越搞不懂了,您能拿上面这个程序改一下吗?

点评

一般情况 DCL 是独立文件,加载 Lisp 时 DCL 需在 Support 路径,也可以将 lisp 和 DCL 一起编译为一个 vlx 你这个程序的 DCL 呢?  详情 回复 发表于 2014-8-22 15:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-22 15:17:22 | 显示全部楼层
lucas3 发表于 2014-8-22 12:37
一般用lisp写的对话框不是在temp文件夹吗?越来越搞不懂了,您能拿上面这个程序改一下吗?

一般情况 DCL 是独立文件,加载 Lisp 时 DCL 需在 Support 路径,也可以将 lisp 和 DCL 一起编译为一个 vlx

你这个程序的 DCL 呢?

点评

回大师,DCL在5楼 ,我曾经试过将lisp与DCL打包成一个vlx文件使用,结果无法正常使用,后来将DCL拷贝一份到支持路径下就可以使用了,这种问题在明经有也人提出过(http://bbs.mjtd.com/thread-100241-1-1.html  详情 回复 发表于 2014-8-22 15:33
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-8-22 15:33:51 | 显示全部楼层
Free-Lancer 发表于 2014-8-22 15:17
一般情况 DCL 是独立文件,加载 Lisp 时 DCL 需在 Support 路径,也可以将 lisp 和 DCL 一起编译为一个 v ...

回大师,DCL在5楼 ,我曾经试过将lisp与DCL打包成一个vlx文件使用,结果无法正常使用,后来将DCL拷贝一份到支持路径下就可以使用了,这种问题在明经有也人提出过(http://bbs.mjtd.com/thread-100241-1-1.html ) 所示想学习,最好能把dcl写进lisp……

点评

你这里面还用到了 (findfile "rough.slb")  详情 回复 发表于 2014-8-22 15:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-22 15:56:21 | 显示全部楼层
lucas3 发表于 2014-8-22 15:33
回大师,DCL在5楼 ,我曾经试过将lisp与DCL打包成一个vlx文件使用,结果无法正常使用,后来将DCL拷 ...

你这里面还用到了 (findfile "rough.slb")

点评

大师帮忙改下,顺便学习一下,谢谢!  详情 回复 发表于 2014-8-22 17:27
是的,这是风版的程序,上面贴出了原贴地址,我一起上传上来吧  详情 回复 发表于 2014-8-22 16:26
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-8-22 16:26:18 | 显示全部楼层
Free-Lancer 发表于 2014-8-22 15:56
你这里面还用到了 (findfile "rough.slb")

是的,这是风版的程序,上面贴出了原贴地址,我一起上传上来吧

rough.rar

537 Bytes, 下载次数: 6

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-8-22 17:27:30 | 显示全部楼层
Free-Lancer 发表于 2014-8-22 15:56
你这里面还用到了 (findfile "rough.slb")

大师帮忙改下,顺便学习一下,{:soso_e100:}谢谢!

点评

选择专家模式,直接编译就可以使用,将 slb 和 vlx 放到 Support 目录  详情 回复 发表于 2014-8-22 17:45
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-8-22 17:45:05 | 显示全部楼层
lucas3 发表于 2014-8-22 17:27
大师帮忙改下,顺便学习一下,谢谢!

选择专家模式,直接编译就可以使用,将 slb 和 vlx 放到 Support 目录

rough.rar

3.89 KB, 下载次数: 1

点评

谢谢回贴,这个编译是没有问题,我的真正目的还是希望学习把对话框写入到lisp当中!  详情 回复 发表于 2014-8-22 18:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 13:22 , Processed in 0.730379 second(s), 75 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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