找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2922|回复: 7

[每日一码] 2016的Vlisp(vlide)很有意思--画内角螺钉和怪事

[复制链接]
发表于 2016-9-22 10:45:21 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 WhoCanSay 于 2016-9-22 16:13 编辑

以前写的画内六角螺钉,不能运行了,自己也看不懂了,整理一下。我用16版vlide来显示错误,可以看到一步一步执行,甚至先执行哪一个表。。。。
  1. (Defun *Error* (st)
  2.   (vl-bt)
  3. )
  4. ;;5 [功能] 获取在图元 en 之后产生的图元的选择集
  5. (defun lt:ss-entnext (en / ss)
  6.   (if en
  7.     (progn
  8.       (setq ss (ssadd))
  9.       (while (setq en (entnext en))
  10.   (if (not (member (cdr (assoc 0 (entget en)))
  11.        '("ATTRIB"
  12.          "VERTEX"
  13.          "SEQEND"
  14.         )
  15.      )
  16.       )
  17.     (ssadd en ss)
  18.   )
  19.       )
  20.       (if (zerop (sslength ss))
  21.   (setq ss nil)
  22.       )
  23.       ss
  24.     )
  25.     (ssget "_x")
  26.   )
  27. )
  28. ;;190.1 捕捉开始
  29. (defun _StartOsmode (/ L LST)
  30.   (setq L '("Autosnap" "osmode" "polarmode" "polarAng" "snapmode" "Gridmode" "SanpStyl"))
  31.   (foreach x L
  32.     (setq Lst (cons (cons x (getvar x)) Lst))
  33.   )
  34.   (setenv "MyOsmode" (VL-PRIN1-TO-STRING Lst))
  35. )
  36. ;;190.2 捕捉结束
  37. (defun _EndOsmode (/ L)
  38.   (cond
  39.     ((setq L (getenv "MyOsmode"))
  40.      (setq L (read L))
  41.      (mapcar '(lambda (x) (cond ((cdr x) (setvar (car x) (cdr x))))) L)
  42.     )
  43.   )
  44. )
  45. (defun hh-hua (/     pick_view         drawld             B           D         D1    D2    D3           DCLID DK
  46.                E0    F           FA         FINDFIL     FN           FNAME H1    J     JB           JB1         L
  47.                L1    LOOP  RETURN#     STR1  VB           WHICH X     X0    X1           X10         X11
  48.                X12   X13   X14         X15   X16   X17   X18         X19   X2    X20   X21         X22
  49.                X3    X4           X5         X6    X7    X8           X9 key
  50.               )
  51.   (defun pick_view ()
  52.     (setq which (get_tile "edit1"))
  53.     (cond
  54.       ((= key "rddio1") (setq d 1.6))
  55.       ((= key "rddio2") (setq d 2))
  56.       ((= key "rddio3") (setq d 3))
  57.       ((= key "rddio4") (setq d 4))
  58.       ((= key "rddio5") (setq d 5))
  59.       ((= key "rddio6") (setq d 6))
  60.       ((= key "rddio8") (setq d 8))
  61.       ((= key "rddio10") (setq d 10))
  62.       ;;((= key "rddio12") (setq d 12))
  63.       ((= key "rddio14") (setq d 14))
  64.       ((= key "rddio16") (setq d 16))
  65.       ((= key "rddio20") (setq d 20))
  66.       ((= key "rddio24") (setq d 24))
  67.       ((= key "rddio30") (setq d 30))
  68.       ((= key "rddio36") (setq d 36))
  69.       (T (setq d 12))
  70.     )
  71.     ;;去除下面部分
  72.     (cond
  73.       ((= "1" (get_tile "rddio51")) (setq l1 "c"))
  74.       ;;((= "1" (get_tile "rddio52")) (setq l1 "z"))
  75.       ((= "1" (get_tile "rddio53")) (setq l1 "j"))
  76.       (T (setq l1 "z"))
  77.     )
  78.     ;;d3-螺纹小径,d2-通孔直径,l-螺栓长,B-螺纹长,d1-螺栓头通孔,dk-螺栓头直径,h1-螺栓头深
  79.     (setq fa (list (read l1) d))                            ;fa(c 12)型式
  80.     (setq findfil (findfile "ld1-t.txt"))
  81.     (setq f (open findfil "r"))
  82.     (setq vb (read (read-line f)))                            ; 读表头入vb=(h1 dk d1 b l d2 d3)
  83.     (setq loop T)                                            ;初赋loop为真
  84.     (while loop
  85.       (setq jb (read (read-line f)))
  86.       (if (equal fa (car jb))                                    ;fa=(c 10)
  87.         (setq jb1  jb                                            ;jb1=((c 10) 11.43 16 18 32 100 12)
  88.               loop nil
  89.         )
  90.       )
  91.     )
  92.     (setq j   -1
  93.           jb1 (cdr jb1)                                            ;jb1=(11.43 16 18 32 100 12)
  94.     )
  95.     (repeat (length vb)                                            ;vb长度
  96.       (setq j (1+ j)
  97.             x (nth j vb)                                    ;x=vb中一一取值
  98.       )
  99.       (set x (nth j jb1))                                    ;vb中的值,如11.43
  100.     )
  101.     (close f)
  102.     (setq
  103.       str1
  104.        (strcat "螺钉最大长度=" (itoa l) "; 螺纹最大长度=" (itoa b))
  105.     )
  106.     (set_tile "text1" str1)                                    ;用标签显示

  107.     (setq str1 (read which))                                    ;str1为输入长度
  108.     (if        (equal str1 nil)
  109.       (setq str1 50)
  110.     )
  111.     (if        (< str1 l)
  112.       (setq l str1)
  113.     )                                                            ;若输入螺钉长小于螺钉最大长l,取输入值str1。 b=螺纹长度
  114.     (if        (< str1 b)
  115.       (setq b str1)
  116.     )
  117.   )

  118.   (defun drawld        ()
  119.     ;;(setvar "osnapcoord" 1)
  120.     (setq x0 (getpoint "\n 请点取螺钉放置点:"))
  121.     (setq x0 (list (car x0) (cadr x0)))                            ;转成2D
  122.     (setq x1 (mapcar '+ x0 (list (- 0 h1) (/ d1 2.0))))
  123.     (setq x2 (mapcar '+ x1 (list h1 0)))
  124.     (setq x3 (mapcar '- x2 (list 0 d1)))
  125.     (setq x4 (mapcar '- x3 (list h1 0)))
  126.     (setq x5 (mapcar '+ x0 (list (- 0 h1) (/ dk 2.0))))
  127.     (setq x6 (mapcar '+ x5 (list h1 0)))
  128.     (setq x7 (mapcar '- x6 (list 0 dk)))
  129.     (setq x8 (mapcar '- x7 (list h1 0)))
  130.     (setq x9 (mapcar '+ x0 (list 0 (/ d 2.0))))
  131.     (setq x20 (/ (- d d3) 2.0))                                    ;临时
  132.     (setq x21 (mapcar '+ x9 (list l 0)))                    ;临时
  133.     (setq x10 (mapcar '- x21 (list x20 0)))
  134.     (setq x11 (mapcar '- x21 (list 0 x20)))
  135.     (setq x13 (mapcar '- x10 (list 0 d)))
  136.     (setq x12 (mapcar '+ x13 (list x20 x20)))
  137.     (setq x14 (mapcar '- x9 (list 0 d)))
  138.     (setq x17 (mapcar '- x11 (list b 0)))
  139.     (setq x16 (mapcar '+ x17 (list 0 x20)))
  140.     (setq x15 (mapcar '- x16 (list 0 d)))
  141.     (setq x18 (mapcar '+ x15 (list 0 x20)))
  142.     (setq x19 (mapcar '+ x0 (list 0 (/ d2 2.0))))
  143.     (setq x20 (mapcar '+ x19 (list b 0)))
  144.     (setq x21 (mapcar '- x20 (list 0 d2)))
  145.     (setq x22 (mapcar '- x19 (list 0 d2)))

  146.     (vl-cmdf "layer" "set" "0" "")
  147.     (setq e0 (entlast))
  148.     (vl-cmdf "line" x1 x2 "")
  149.     (vl-cmdf "line" x2 x3 "")
  150.     (vl-cmdf "line" x3 x4 "")
  151.     (vl-cmdf "line" x6 x5 "")
  152.     (vl-cmdf "line" x5 x8 "")
  153.     (vl-cmdf "line" x8 x7 "")
  154.     (vl-cmdf "line" x9 x10 "")
  155.     (vl-cmdf "line" x10 x11 "")
  156.     (vl-cmdf "line" x11 x12 "")
  157.     (vl-cmdf "line" x12 x13 "")
  158.     (vl-cmdf "line" x13 x14 "")
  159.     (vl-cmdf "line" x15 x16 "")
  160.     (vl-cmdf "line" x10 x13 "")
  161.     (vl-cmdf "line" x19 x20 "")
  162.     (vl-cmdf "line" x21 x22 "")
  163.     (vl-cmdf "line" x17 x11 "")
  164.     (vl-cmdf "line" x12 x18 "")
  165.     (vl-cmdf "layer" "set" "0" "")
  166.     (setq x1 (mapcar '+ x0 '(10 0)))
  167.     (vl-cmdf "rotate" (lt:ss-entnext e0) "" x0 "R" x0 x1 pause)
  168.   )

  169.   (setq fname (vl-filename-mktemp nil nil ".dcl"))
  170.   (setq fn (open fname "w"))
  171.   (write-line "hua:dialog {" fn)
  172.   (write-line "    label = \"画内六角螺钉\";" fn)
  173.   (write-line ": boxed_radio_row {" fn)
  174.   (write-line "        label=\"内六角螺钉大小\";" fn)
  175.   (write-line "" fn)
  176.   (write-line "        : radio_button { " fn)
  177.   (write-line "        label=\"M1.6\";" fn)
  178.   (write-line "        key=\"rddio1\";" fn)
  179.   (write-line "        }" fn)
  180.   (write-line "        : radio_button { " fn)
  181.   (write-line "        label=\"M2\";" fn)
  182.   (write-line "        key=\"rddio2\";" fn)
  183.   (write-line "        }" fn)
  184.   (write-line "        : radio_button { " fn)
  185.   (write-line "        label=\"M3\";" fn)
  186.   (write-line "        key=\"rddio3\";" fn)
  187.   (write-line "        }" fn)
  188.   (write-line "        : radio_button { " fn)
  189.   (write-line "        label=\"M4\";" fn)
  190.   (write-line "        key=\"rddio4\";" fn)
  191.   (write-line "        }" fn)
  192.   (write-line "        : radio_button { " fn)
  193.   (write-line "        label=\"M5\";" fn)
  194.   (write-line "        key=\"rddio5\";" fn)
  195.   (write-line "        }" fn)
  196.   (write-line "        : radio_button { " fn)
  197.   (write-line "        label=\"M6\";" fn)
  198.   (write-line "        key=\"rddio6\";" fn)
  199.   (write-line "        }" fn)
  200.   (write-line "        : radio_button { " fn)
  201.   (write-line "        label=\"M8\";" fn)
  202.   (write-line "        key=\"rddio8\";" fn)
  203.   (write-line "        }" fn)
  204.   (write-line "        : radio_button { " fn)
  205.   (write-line "        label=\"M10\";" fn)
  206.   (write-line "        key=\"rddio10\";" fn)
  207.   (write-line "        }" fn)
  208.   (write-line "        : radio_button { " fn)
  209.   (write-line "        label=\"M12\";" fn)
  210.   (write-line "        value=\"1\";" fn)
  211.   (write-line "        key=\"rddio12\";" fn)
  212.   (write-line "        }" fn)
  213.   (write-line "        : radio_button { " fn)
  214.   (write-line "        label=\"M14\";" fn)
  215.   (write-line "        key=\"rddio14\";" fn)
  216.   (write-line "        }" fn)
  217.   (write-line "        : radio_button { " fn)
  218.   (write-line "        label=\"M16\";" fn)
  219.   (write-line "        key=\"rddio16\";" fn)
  220.   (write-line "        }" fn)
  221.   (write-line "        : radio_button { " fn)
  222.   (write-line "        label=\"M20\";" fn)
  223.   (write-line "        key=\"rddio20\";" fn)
  224.   (write-line "        }" fn)
  225.   (write-line "        : radio_button { " fn)
  226.   (write-line "        label=\"M24\";" fn)
  227.   (write-line "        key=\"rddio24\";" fn)
  228.   (write-line "        }" fn)
  229.   (write-line "        : radio_button { " fn)
  230.   (write-line "        label=\"M30\";" fn)
  231.   (write-line "        key=\"rddio30\";" fn)
  232.   (write-line "        }" fn)
  233.   (write-line "        : radio_button { " fn)
  234.   (write-line "        label=\"M36\";" fn)
  235.   (write-line "        key=\"rddio36\";" fn)
  236.   (write-line "        }" fn)
  237.   (write-line "" fn)
  238.   (write-line "    }" fn)
  239.   (write-line ": boxed_radio_row {" fn)
  240.   (write-line "        label=\"通孔直径\";" fn)
  241.   (write-line "        : radio_button { " fn)
  242.   (write-line "        label=\"粗装配\";" fn)
  243.   (write-line "        key=\"rddio51\";" fn)
  244.   (write-line "        }" fn)
  245.   (write-line "        : radio_button { " fn)
  246.   (write-line "        label=\"中等装配\";" fn)
  247.   (write-line "        key=\"rddio52\";" fn)
  248.   (write-line "        value=\"1\";" fn)
  249.   (write-line "        }" fn)
  250.   (write-line "        : radio_button { " fn)
  251.   (write-line "        label=\"精装配\";" fn)
  252.   (write-line "        key=\"rddio53\";" fn)
  253.   (write-line "        }" fn)
  254.   (write-line "}" fn)
  255.   (write-line "" fn)
  256.   (write-line ": edit_box {" fn)
  257.   (write-line "        label=\"输入螺钉长度\"; " fn)
  258.   (write-line "        value =\"50\";" fn)
  259.   (write-line "        key=\"edit1\";" fn)
  260.   (write-line "    }" fn)
  261.   (write-line ": text {" fn)
  262.   (write-line "        value=\"螺纹长度 36\";" fn)
  263.   (write-line "        key=\"text1\";" fn)
  264.   (write-line "    }" fn)
  265.   (write-line "ok_only;" fn)
  266.   (write-line "" fn)
  267.   (write-line "" fn)
  268.   (write-line "" fn)
  269.   (write-line "}" fn)
  270.   (close fn)

  271.   (setq dclid (load_dialog fname))
  272.   (new_dialog "hua" dclid)
  273.   (action_tile "edit1" "(pick_view)")
  274.   (action_tile "rddio1" "(setq key $key)(pick_view)")
  275.   (action_tile "rddio2" "(setq key $key)(pick_view)")
  276.   (action_tile "rddio3" "(setq key $key)(pick_view)")
  277.   (action_tile "rddio4" "(setq key $key)(pick_view)")
  278.   (action_tile "rddio5" "(setq key $key)(pick_view)")
  279.   (action_tile "rddio6" "(setq key $key)(pick_view)")
  280.   (action_tile "rddio8" "(setq key $key)(pick_view)")
  281.   (action_tile "rddio10" "(setq key $key)(pick_view)")
  282.   (action_tile "rddio12" "(setq key $key)(pick_view)")
  283.   (action_tile "rddio14" "(setq key $key)(pick_view)")
  284.   (action_tile "rddio16" "(setq key $key)(pick_view)")
  285.   (action_tile "rddio20" "(setq key $key)(pick_view)")
  286.   (action_tile "rddio24" "(setq key $key)(pick_view)")
  287.   (action_tile "rddio30" "(setq key $key)(pick_view)")
  288.   (action_tile "rddio36" "(setq key $key)(pick_view)")
  289.   (action_tile "accept" "(pick_view)")
  290.   (setq return# (start_dialog))
  291.   (unload_dialog dclid)
  292.   (vl-file-delete fname)
  293.   (_StartOsmode)
  294.   (setvar 'osmode 0)
  295.   (drawld)
  296.   (_EndOsmode)
  297.   (gc)
  298.   (princ)
  299. )

2016的Vlisp很有意思--画内角螺钉

2016的Vlisp很有意思--画内角螺钉

2016的Vlisp很有意思--画内角螺钉

2016的Vlisp很有意思--画内角螺钉

ld1-t.txt

1.91 KB, 下载次数: 10, 下载积分: D豆 -1 , 活跃度 1

售价: 1 D豆  [记录]

2016的Vlisp很有意思--画内角螺钉

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

已领礼包: 6056个

财富等级: 富甲天下

发表于 2016-9-22 11:46:40 | 显示全部楼层
黄大师整天捣鼓这些稀罕玩意儿。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-22 16:13:04 | 显示全部楼层
本帖最后由 WhoCanSay 于 2016-9-22 16:14 编辑

怪事
(princ "\n BBBBB")(princ b)   
(setq x0 (getpoint "\n 请点取螺钉放置点:"))
(princ "\n CCCC")(princ b)
这三句连续写,中间没有其它代码,显示的b值不一样,后面一个为nil
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-23 08:55:39 | 显示全部楼层
楼主人品真差,没有人来帮忙。问题没有找到,解决办法倒是有了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2016-9-23 10:22:54 | 显示全部楼层
呵呵

人品是差
---------------------
(setq L '("Autosnap" "osmode" "polarmode" "polarAng" "snapmode" "Gridmode" "SanpStyl"))
最后一个 "SanpStyl" ,应该是 snapstyl 吧
没调试。因为没下附件。
----------------------
叫人帮忙还叫人付费, 好人品

点评

上面的程序是能正常运行的,一般也不容易发现我说的问题。怪事是我后来加上去的,只是想讨论一下,自己能解决。  发表于 2016-9-23 12:27
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-23 11:37:55 | 显示全部楼层

版主说的是。
不过,我觉得一个豆不算什么,而且那个豆与问题无关。

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

使用道具 举报

已领礼包: 1094个

财富等级: 财源广进

发表于 2021-10-7 00:05:07 | 显示全部楼层
感谢分享 2016的Vlisp(vlide)很有意思--画内角螺钉和怪事
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 16:28 , Processed in 0.234853 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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