明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1677|回复: 13

[提问] 求助:LISP写完了,DCL与LISP交互目前没有搞定

[复制链接]
发表于 2022-5-6 10:55:02 | 显示全部楼层 |阅读模式
求助ISP写完了,DCL与LISP交互目前没有搞定。

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-5-9 01:30:58 | 显示全部楼层



这里有几个可以学习的

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
zhangcan0515 + 1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2022-6-20 19:41:32 | 显示全部楼层
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   (setq dcl_file (open (setq tmp-dcl-file-name (vl-filename-mktemp nil nil  ".DCL")) "w"))
              (progn
                 (foreach x
                   '(  

                     "yu:dialog {"  
                     "    label = \"圆变多边形\" ;    "  
                     "    :boxed_column {"  
                     "        label = \"选择内外\" ;"  
                     "        :edit_box{label = \"边数:\" ;key = \"Text1\";  height=1.2;}"  
                     "        :button {label = \"内接于圆:<I>\"; key=\"bb1\"; height=3; }"  
                     "        :button {label = \"外切于圆:<C>\"; key=\"bb2\"; height=3; }"  
                     "        }"  
                     "    cancel_button;"  
                     "}"  
     ) (write-line x dcl_file) )
     (setq dcl_file (close dcl_file)))

(defun C:TT()
     (setq dcl_id (load_dialog tmp-dcl-file-name));加载DCL
         (if (not (new_dialog "yu" dcl_id))(exit)) ;;激活对话框
     (if (not side) (setq side 5))
     (set_tile "Text1" (rtos side 2 0))
     (action_tile "accept" "(get_yu_Text) (done_dialog 0)")
     (action_tile "bb1"    "(get_yu_Text) (done_dialog 1)")
     (action_tile "bb2"    "(get_yu_Text) (done_dialog 2)")
     (setq yua_d (start_dialog))
         (cond
             ((= yua_d 1) (setq ttype "I") (c:yuantd))
             ((= yua_d 2) (setq ttype "C") (c:yuantd))
         )      
)

(defun get_yu_Text()
     (setq side (atoi (get_tile "Text1")))
)

(defun c:yuantd()
  (setvar "cmdecho" 0)
  (setq osm (getvar "osmode"))
  (setvar "osmode" 0)
  (setq ss (ssget (list (cons 0 "CIRCLE")  )))
  (setq n 0)
  (repeat (sslength ss)
    (setq ent (ssname ss n)) ;;;获取提n个像素名
    (setq ent_data (entget ent))
    (setq r (cdr (assoc 40 ent_data))
             pc (cdr (assoc 10 ent_data))
        )
             (command "polygon" side pc ttype r)
    (setq n (1+ n))
  )
  (setvar "osmode" osm)
  (princ)
)

合并版 试用看看

评分

参与人数 1明经币 +1 收起 理由
zhangcan0515 + 1 又学习到了

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-8 13:07:14 | 显示全部楼层
我也不太会DCL 。试着弄了下 应该可以用了
  1. (defun c:tt()
  2.   (setvar "cmdecho" 0)
  3.   (setq osm (getvar "osmode"))
  4.   (setvar "osmode" 0)
  5.   (princ "\n选择要做外切或内接正多边形的圆:")
  6.   (setq p1 (getpoint))
  7.   (setq p2 (getcorner p1))
  8.   (if (> (car p1) (car p2))
  9.     (setq ss (ssget "c" p1 p2))
  10.     (setq ss (ssget "w" p1 p2))
  11.   )
  12.   (setq side (getint "\n正多边形的变数<5>:"))
  13.   (if (= side nil)
  14.     (setq side 5)
  15.   )
  16.   (SETQ DCL_ID(LOAD_DIALOG "圆变多边形.DCL"))
  17.   (NEW_DIALOG "yu" DCL_ID)
  18.   (ACTION_TILE "bb1" "(setq ttype 0)(done_dialog)(UNLOAD_DIALOG DCL_ID)")
  19.   (ACTION_TILE "bb2" "(setq ttype 1)(done_dialog)(UNLOAD_DIALOG DCL_ID)")
  20.   (START_DIALOG)
  21.   (COND
  22.     ((= ttype 0) (setq ttype "I"))
  23.         ((= ttype 1) (setq ttype "C"))
  24.         (T (setq ttype "I"))
  25.   )
  26.   (setq n 0)
  27.   (repeat (sslength ss)
  28.     (setq ent (ssname ss n))
  29.     (setq ent_data (entget ent))
  30.     (setq ent_type (cdr (assoc 0 ent_data)))
  31.     (if        (= ent_type "CIRCLE")
  32.       (progn (setq r (cdr (assoc 40 ent_data)))
  33.              (setq pc (cdr (assoc 10 ent_data)))
  34.              (command "polygon" side pc ttype r)
  35.       )
  36.     )
  37.     (setq n (1+ n))
  38.   )
  39.   (setvar "osmode" osm)
  40.   (princ)
  41. )

评分

参与人数 1明经币 +1 收起 理由
zhangcan0515 + 1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-8 00:22:49 | 显示全部楼层
目前是按照你程序操作顺序来的。
也可以有有另外一操作方式,就是执行命令后按空格或者回车设置参数,如没有按空格或者回车,则选圆按照上次设定好的 参数生成多边形,这样的使用参数不变的情况下批量操作剩下了每次选择形式的操作。

时间有限,比较潦草。

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
zhangcan0515 + 1 谢谢,老师给我写了一种思路!有收获!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-5-8 11:55:45 | 显示全部楼层
之前是我考虑不周到,经过院长和ZZ老师普及知识。对DCL交互有了新的认识。

本帖子中包含更多资源

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

x
 楼主| 发表于 2022-5-8 13:34:28 | 显示全部楼层
muwind 发表于 2022-5-8 13:07
我也不太会DCL 。试着弄了下 应该可以用了

谢谢老师帮助与指导,我也在学习DCL交互!!
发表于 2022-5-8 17:37:36 | 显示全部楼层
猫老师的VB转DCL,挺好的,关联都已经做好了,你可以看看相关的帖子
 楼主| 发表于 2022-5-8 20:40:20 | 显示全部楼层
hhh454 发表于 2022-5-8 17:37
猫老师的VB转DCL,挺好的,关联都已经做好了,你可以看看相关的帖子

猫老师的这个用过了,我想着先不用别人的插件搞这种的。本方法做。DCL官方自带的玩熟悉了,在利用插件。
发表于 2022-5-9 01:29:33 | 显示全部楼层
zhangcan0515 发表于 2022-5-8 20:40
猫老师的这个用过了,我想着先不用别人的插件搞这种的。本方法做。DCL官方自带的玩熟悉了,在利用插件。

建议直接用就行,老师都研究好了,腾出时间写主程序部分,岂不更好
 楼主| 发表于 2022-5-10 11:59:39 | 显示全部楼层
hhh454 发表于 2022-5-9 01:30
这里有几个可以学习的

老师你说的有一定道理,我还是想把自带的搞懂在研究其他的人的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-15 06:58 , Processed in 0.182568 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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