乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 106|回复: 13

[编程交流] DCL和Lisp的帮助

[复制链接]

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 16:21:41 | 显示全部楼层 |阅读模式
你好我正在试着用lisp通过dcl和幻灯片进行操作
 
我有一个包含4个不同lisp代码的lisp文件,还有一个包含4张幻灯片的dcl文件。我想在单击幻灯片时运行例程。查看附件*。zip文件
 
谢谢
十字路口。rar公司
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 16:26:41 | 显示全部楼层
您的dcl代码中有一些问题,第二行缺少双引号,
定义对话框后,包含了几个带有ok\u cancel和errtile的间隔符。
 
我认为应该这样格式化:
  1. intersections : dialog
  2. { label = "ΚΑΤΑΣΚΕΥΕΣ  ΣΗΜΕΙΩΝ                Topocad 2017";
  3. spacer_1;
  4. : text_part { label = "Επιλέξτε είδος Κατασκευής Σημείου :" ; alignment = left; }   
  5. spacer_1;
  6. : row
  7. { children_height = 8.0; children_width = 29.0; children_fixed_width = true; children_fixed_height = true;
  8.    : image_button  { key = "me" ; color = graphics_background; }     
  9.    : image_button { key = "te" ; color = graphics_background; }     
  10. }
  11. : row
  12. { children_height = 8.0; children_width = 29.0; children_fixed_width = true; children_fixed_height = true;
  13.    : image_button  { key = "pse" ; color = graphics_background; }     
  14.    : image_button { key = "tk" ; color = graphics_background; }     
  15. }
  16. spacer_1; ok_cancel; : errtile { width = 34; }
  17. }
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 16:35:19 | 显示全部楼层
您好,Grrr。谢谢你的回复。我做了更改,但仍然没有加载dcl文件
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 16:36:20 | 显示全部楼层
有什么想法吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:43:49 | 显示全部楼层
我快速看了一下,你似乎没有开始图像处理,也没有暗示哪个图像放在哪个方块里。我将尝试查找一些示例代码。
 
  1. (start_image "icon_noi")
  2.      (slide_image 0 0 (- (dimx_tile "icon_noi") 1) (- (dimy_tile "icon_noi") 1) "BIG-ALblank")
  3.      (end_image)
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 16:48:42 | 显示全部楼层
嗨,比格尔。你能给我举个例子吗,因为我不懂。。。。。
 
谢谢
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 16:53:25 | 显示全部楼层
我错认为children_height=8.0;children_width=29.0;属性,但以下是一个示例:
  1. ; Slides Example
  2. (defun C:test ( / L *error* dcl des dch dcf slidefiles r )
  3. (setq L
  4.    '(
  5.      ("te" ; inter
  6.        (
  7.          (lambda ( / o1 o2 )
  8.            (and (setq o1 (car (entsel "\nFirst Object: "))) (setq o2 (car (entsel "\nSecond Object: ")))
  9.              (foreach p (LM:Intersections (vlax-ename->vla-object o1) (vlax-ename->vla-object o2) acextendboth)
  10.                (entmake (list '(0 . "POINT") (cons 10 p)))
  11.              )
  12.            )
  13.          )
  14.        )
  15.      )
  16.      ("tk" ; interset
  17.        (
  18.          (lambda ( SS ) (if SS (foreach p (LM:intersectionsinset SS) (entmake (list '(0 . "POINT") (cons 10 p))) ) ) )
  19.          (progn (princ "\nSelect objects to intersect: ") (ssget) )
  20.        )
  21.      )
  22.      ("pse" ; perpt
  23.        (
  24.          (lambda ( / dis enx pt1 pt2 pt3 sel tmp )
  25.            (while
  26.              (not
  27.                (progn (setvar 'errno 0) (setq sel (entsel "\nSelect line or polyline segment: "))
  28.                  (cond ( (= 7 (getvar 'errno)) (prompt "\nMissed, try again.") ) ( (null sel) )
  29.                    ( (= "LINE" (cdr (assoc 0 (setq enx (entget (car sel))))))
  30.                      (setq
  31.                        pt1 (trans (cdr (assoc 10 enx)) 0 1)
  32.                        pt2 (trans (cdr (assoc 11 enx)) 0 1)
  33.                        dis (distance pt1 pt2)
  34.                      )
  35.                    )
  36.                    ( (= "LWPOLYLINE" (cdr (assoc 0 enx)))
  37.                      (setq
  38.                        tmp (vlax-curve-getclosestpointto (car sel) (trans (cadr sel) 1 0))
  39.                        tmp (fix (+ 1e-8 (vlax-curve-getparamatpoint (car sel) tmp)))
  40.                        pt1 (trans (vlax-curve-getpointatparam (car sel)     tmp)  0 1)
  41.                        pt2 (trans (vlax-curve-getpointatparam (car sel) (1+ tmp)) 0 1)
  42.                        dis (distance pt1 pt2)
  43.                      )
  44.                    )
  45.                    ( (prompt "\nThe selected object is not a line or 2D polyline.") )
  46.                  )
  47.                )
  48.              )
  49.            )
  50.            (if (and pt1 pt2 (setq pt3 (getpoint "\nSpecify 3rd point: ")))
  51.              (entmake
  52.                (list '(000 . "POINT") '(008 . "section")
  53.                  (cons 010 (trans (polar pt1 (angle pt1 pt2) (apply '+ (mapcar '* (mapcar '- pt3 pt1) (mapcar '(lambda ( a b ) (/ (- a b) dis)) pt2 pt1) ) ) ) 1 0) )
  54.                  (cons 210 (trans '(0 0 1) 1 0 t))
  55.                )
  56.              )
  57.            )
  58.            (princ)
  59.          )
  60.        )
  61.      )
  62.      ("me" ; MidPl
  63.        (
  64.          (lambda ( / e enx o prm mp )
  65.            (and
  66.              (setq e (car (entsel "\nSelect line: "))) (setq enx (entget e))
  67.              (member (cdr (assoc 0 enx)) '("POLYLINE" "LWPOLYLINE" "LINE"))
  68.              (setq o (vlax-ename->vla-object e)) (setq prm (vlax-curve-getEndParam o))
  69.              (setq mp (vlax-curve-getPointAtDist o (* 0.5 (vlax-curve-getDistAtParam o prm))))
  70.              (entmake (list '(0 . "POINT") (cons 10 mp)))
  71.              (princ (strcat "\nPoint object created at mid-point: " (vl-prin1-to-string mp))) (princ)
  72.            )
  73.          )
  74.        )
  75.      )
  76.    ); list
  77. ); setq L
  78. (defun *error* ( msg )
  79.    (and (< 0 dch) (unload_dialog dch))
  80.    (and (eq 'FILE (type des)) (close des))
  81.    (and (eq 'STR (type dcl)) (findfile dcl) (vl-file-delete dcl))
  82.    (and msg (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*") (princ (strcat "\nError: " msg)) ))
  83.    (princ)
  84. ); defun *error*
  85. (cond
  86.    (
  87.      (progn
  88.        (setq slidefiles (mapcar '(lambda (x) (strcat x ".sld")) '("me" "te" "pse" "tk"))) ; <- adjust slidernames
  89.        (vl-some '(lambda (x) (if (not (findfile x)) (princ (strcat "\nUnable to find "" x "" file.")))) slidefiles)
  90.      )
  91.    )
  92.    (
  93.      (not
  94.        (and (setq dcl (vl-filename-mktemp nil nil ".dcl")) (setq des (open dcl "w"))
  95.          (princ
  96.            (apply 'strcat
  97.              (mapcar (function (lambda (x) (apply 'strcat (mapcar 'chr x))))
  98.                '(
  99.                  (116 101 115 116 32 58 32 100 105 97 108 111 103 32) (123 32 108 97 98 101 108 32 61 32 34 73 110 116 101 114 115 101 99 116 105 111 110 115 34 59)
  100.                  (32 32 58 32 98 111 120 101 100 95 99        111 108        117 109        110 32)
  101.                  (32 32 123 32 108 97 98 101 108 32 61        32 34 67 104 111        111 115 101 32 97 99 116 105 111 110 34 59 32        115 112 97 99 101 114 95 49        59)
  102.                  (32 32 32 32 58 32 114 111 119 32)
  103.                  (32 32 32        32 123 32 99 104 105 108 100 114 101 110 95 102 105 120 101 100 95 119 105 100 116 104 32 61 32        116 114 117
  104.                    101 59 32 99 104 105 108 100 114 101 110 95 102 105 120 101 100 95 104 101 105 103 104 116 32 61 32 116 114 117 101 59
  105.                  )
  106.                  (32 32 32        32 32 32 58 32 105 109 97 103 101 95 98 117        116 116 111 110 32 32 123 32 107 101 121 32 61 32 34 109 101 34 59 32 104        101 105 103
  107.                    104 116        32   61          32   49   50         59   32   119        105  100  116 104 32        61   32          51   50   59         32   99   111        108  111  114
  108.                    32 61        32   103  114  97   112         104  105  99        115  95          98 97 99        107  103  114  111  117         110  100  59        32   125
  109.                  )
  110.                  (32 32 32        32 32 32   58   32         105  109  97        103  101  95 98 117 116 116  111  110  32         123  32   107        101  121  32
  111.                    61 32        34 116 101  34   59         32   104  101        105  103  104 116 32        61 32          49   50   59         32   119  105        100  116  104
  112.                    32 61        32 51 50   59   32         99   111  108        111  114  32 61 32        103 114  97   112  104         105  99   115        95   98          97
  113.                    99 107        103  114  111  117  110         100  59   32        125
  114.                  )
  115.                  (32 32 32 32 125) (32 32 32 32 58 32 114 111 119 32)
  116.                  (32 32   32        32   123  32   99   104         105  108  100        114  101  110 95   102        105  120  101  100  95         119  105  100        116  104  32
  117.                    61   32        116  114  117  101  59         32   99   104        105  108  100 114  101        110  95          102  105  120         101  100  95        104  101  105
  118.                    103  104        116  32          61   32   116         114  117  101        59
  119.                  )
  120.                  (32 32   32        32   32          32   58   32         105  109  97        103  101  95 98 117        116  116  111  110  32         32   123  32        107  101  121
  121.                    32   61        32   34          112  115  101         34   59   32        104  101  105 103  104        116  32          61   32   49         50   59   32        119  105  100
  122.                    116  104        32   61          32   51   50         59   32   99        111  108  111 114  32        61   32          103  114  97         112  104  105        99   115  95
  123.                    98   97        99   107  103  114  111         117  110  100        59   32          125
  124.                  )
  125.                  (32 32   32        32   32          32   58   32         105  109  97        103  101  95 98   117        116  116  111  110  32         123  32   107        101  121  32
  126.                    61   32        34   116  107  34   59         32   104  101        105  103  104 116  32        61   32          49   50   59         32   119  105        100  116  104
  127.                    32   61        32   51          50   59   32         99   111  108        111  114  32 61   32        103  114  97   112  104         105  99   115        95   98          97
  128.                    99   107        103  114  111  117  110         100  59   32        125
  129.                  )
  130.                  (32 32 32 32 125) (32 32 125)
  131.                  (32 32 115 112 97 99 101 114 95 49 59 32 111 107 95 111 110 108 121 59 32 58 32 116 101 120
  132.                    116 32 123 32 108 97 98 101 108 32 61 32 34 67 114 101 100 105 116 115 32 116 111 58 32 76
  133.                    101 101 32 77 97 99 34 59 32 97 108 105 103 110 109 101 110 116 32 61 32 114 105 103 104 116 59 32 125
  134.                  )
  135.                  (125)
  136.                )
  137.              )
  138.            )
  139.            des
  140.          )
  141.          (not (setq des (close des))) (< 0 (setq dch (load_dialog dcl)))
  142.        ); and
  143.      ); not
  144.      (princ "\nUnable to write or load the DCL file.")
  145.    )
  146.    ( (not (new_dialog "test" dch)) (princ "\nUnable to display the dialog") )
  147.    (
  148.      (progn
  149.        (mapcar (function (lambda (x) (action_tile x (vl-prin1-to-string '(progn (done_dialog 1) (setq r $key)))))) '("me" "te" "pse" "tk") )
  150.        (mapcar
  151.          (function
  152.            (lambda ( key sld / w h ) ; (slide_image x1 y1 width height sldname)
  153.              (setq w (1- (dimx_tile key))) (setq h (1- (dimy_tile key)))  
  154.              (start_image key) (fill_image 0 0 w h 0) (slide_image 0 0 w h sld) (end_image) ; (fill_image ...) might be redundant
  155.              ; (start_image "me") (slide_image 0 0 (1- (dimx_tile "me")) (1- (dimy_tile "me")) "SlideName.sld") (end_image)
  156.            )
  157.          )
  158.          '("me" "te" "pse" "tk") slidefiles
  159.        )
  160.        (action_tile "accept" (vl-prin1-to-string '(progn (princ "\nBye!") (done_dialog 2))))
  161.        (/= 1 (setq dcf (start_dialog)))
  162.      ); progn
  163.      (princ) ; (princ "\nUser cancelled the dialog.")
  164.    )
  165.    (T (eval (cadr (assoc r L))) )
  166. ); cond
  167. (*error* nil) (princ)
  168. ); defun
  169. ;;--------------------=={ Intersections }==-------------------;;
  170. ;;                                                            ;;
  171. ;;  Returns a list of all points of intersection between      ;;
  172. ;;  two objects for the given intersection mode.              ;;
  173. ;;------------------------------------------------------------;;
  174. ;;  Author: Lee Mac, Copyright © 2012 - www.lee-mac.com       ;;
  175. ;;------------------------------------------------------------;;
  176. ;;  Arguments:                                                ;;
  177. ;;  obj1, obj2 - VLA-Objects                                  ;;
  178. ;;  mode       - acextendoption enum of intersectwith method  ;;
  179. ;;------------------------------------------------------------;;
  180. ;;  Returns:  List of intersection points, or nil             ;;
  181. ;;------------------------------------------------------------;;
  182. (defun LM:Intersections ( obj1 obj2 mode / l r )
  183. (setq l (vlax-invoke obj1 'intersectwith obj2 mode))
  184. (repeat (/ (length l) 3)
  185.    (setq r (cons (list (car l) (cadr l) (caddr l)) r)
  186.      l (cdddr l)
  187.    )
  188. )
  189. (reverse r)
  190. )
  191. ;; Intersections in Set  -  Lee Mac
  192. ;; Returns a list of all points of intersection between all objects in a supplied selection set.
  193. ;; sel - [sel] Selection Set
  194. (defun LM:intersectionsinset ( sel / id1 id2 ob1 ob2 rtn )
  195. (repeat (setq id1 (sslength sel))
  196.    (setq ob1 (vlax-ename->vla-object (ssname sel (setq id1 (1- id1)))))
  197.    (repeat (setq id2 id1)
  198.      (setq ob2 (vlax-ename->vla-object (ssname sel (setq id2 (1- id2))))
  199.        rtn (cons (LM:intersections ob1 ob2 acextendnone) rtn)
  200.      )
  201.    )
  202. )
  203. (apply 'append (reverse rtn))
  204. )

 
172142x771vimvggi9c67f.jpg
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 16:55:07 | 显示全部楼层
谢谢你的帮助。你能解释一下这些数字是多少吗?你用什么程序来做这个?
 
  1. (mapcar (function (lambda (x) (apply 'strcat (mapcar 'chr x))))
  2.                '(
  3.                  (116 101 115 116 32 58 32 100 105 97 108 111 103 32) (123 32 108 97 98 101 108 32 61 32 34 73 110 116 101 114 115 101 99 116 105 111 110 115 34 59)
  4.                  (32 32 58 32 98 111 120 101 100 95 99        111 108        117 109        110 32)
  5.                  (32 32 123 32 108 97 98 101 108 32 61        32 34 67 104 111        111 115 101 32 97 99 116 105 111 110 34 59 32        115 112 97 99 101 114 95 49        59)
  6.                  (32 32 32 32 58 32 114 111 119 32)
  7.                  (32 32 32        32 123 32 99 104 105 108 100 114 101 110 95 102 105 120 101 100 95 119 105 100 116 104 32 61 32        116 114 117
  8.                    101 59 32 99 104 105 108 100 114 101 110 95 102 105 120 101 100 95 104 101 105 103 104 116 32 61 32 116 114 117 101 59
  9.                  )
  10.                  (32 32 32        32 32 32 58 32 105 109 97 103 101 95 98 117        116 116 111 110 32 32 123 32 107 101 121 32 61 32 34 109 101 34 59 32 104        101 105 103
  11.                    104 116        32   61          32   49   50         59   32   119        105  100  116 104 32        61   32          51   50   59         32   99   111        108  111  114
  12.                    32 61        32   103  114  97   112         104  105  99        115  95          98 97 99        107  103  114  111  117         110  100  59        32   125
  13.                  )
  14.                  (32 32 32        32 32 32   58   32         105  109  97        103  101  95 98 117 116 116  111  110  32         123  32   107        101  121  32
  15.                    61 32        34 116 101  34   59         32   104  101        105  103  104 116 32        61 32          49   50   59         32   119  105        100  116  104
  16.                    32 61        32 51 50   59   32         99   111  108        111  114  32 61 32        103 114  97   112  104         105  99   115        95   98          97
  17.                    99 107        103  114  111  117  110         100  59   32        125
  18.                  )
  19.                  (32 32 32 32 125) (32 32 32 32 58 32 114 111 119 32)
  20.                  (32 32   32        32   123  32   99   104         105  108  100        114  101  110 95   102        105  120  101  100  95         119  105  100        116  104  32
  21.                    61   32        116  114  117  101  59         32   99   104        105  108  100 114  101        110  95          102  105  120         101  100  95        104  101  105
  22.                    103  104        116  32          61   32   116         114  117  101        59
  23.                  )
  24.                  (32 32   32        32   32          32   58   32         105  109  97        103  101  95 98 117        116  116  111  110  32         32   123  32        107  101  121
  25.                    32   61        32   34          112  115  101         34   59   32        104  101  105 103  104        116  32          61   32   49         50   59   32        119  105  100
  26.                    116  104        32   61          32   51   50         59   32   99        111  108  111 114  32        61   32          103  114  97         112  104  105        99   115  95
  27.                    98   97        99   107  103  114  111         117  110  100        59   32          125
  28.                  )
  29.                  (32 32   32        32   32          32   58   32         105  109  97        103  101  95 98   117        116  116  111  110  32         123  32   107        101  121  32
  30.                    61   32        34   116  107  34   59         32   104  101        105  103  104 116  32        61   32          49   50   59         32   119  105        100  116  104
  31.                    32   61        32   51          50   59   32         99   111  108        111  114  32 61   32        103  114  97   112  104         105  99   115        95   98          97
  32.                    99   107        103  114  111  117  110         100  59   32        125
  33.                  )
  34.                  (32 32 32 32 125) (32 32 125)
  35.                  (32 32 115 112 97 99 101 114 95 49 59 32 111 107 95 111 110 108 121 59 32 58 32 116 101 120
  36.                    116 32 123 32 108 97 98 101 108 32 61 32 34 67 114 101 100 105 116 115 32 116 111 58 32 76
  37.                    101 101 32 77 97 99 34 59 32 97 108 105 103 110 109 101 110 116 32 61 32 114 105 103 104 116 59 32 125
  38.                  )
  39.                  (125)
  40.                )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:02:53 | 显示全部楼层
这只是DCL代码-硬编码一点-以防止轻易删除李的昵称。
由于他演示了所有或几乎所有提供的子功能和整个动态dcl技术,因此实际上约90%的代码中都有他的存在。
有一点欣赏是很好的(而不是把他的代码放在不同的帖子里,并声称拥有权威)。
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 17:06:22 | 显示全部楼层
我对李的昵称没有问题,只要问我怎么做就行了。是否有任何命令通过autocad visual lisp或我需要另一个程序。是否有任何程序可以帮助我使用dcl,绘制我需要的表格并给我代码?(像visual basic?)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-13 20:31 , Processed in 0.443039 second(s), 85 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表