CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2021 开发者帮助

将操作分配给磁贴

2024-5-18 18:30| 发布者: admin| 查看: 95| 评论: 0|原作者: admin|来自: AutoCAD

将操作分配给磁贴

DCL 定义只不过是定义一个无生命的对话框。使用该函数将此死气沉沉的对话框连接到动态 AutoLISP 代码,如以下代码所示:action_tile

;; Assign actions (the functions to be invoked) to dialog buttons
(action_tile
  "gp_lw"
  "(setq plineStyle \"Light\")"
)
(action_tile
  "gp_hw"
  "(setq plineStyle \"Pline\")"
)
(action_tile
  "gp_actx"
  "(setq objectCreateMethod \"ActiveX\")"
)
(action_tile
  "gp_emake"
  "(setq objectCreateMethod \"Entmake\")"
)
(action_tile
  "gp_cmd"
  "(setq objectCreateMethod \"Command\")"
)
(action_tile "cancel" "(done_dialog) (setq UserClick nil)")
(action_tile
  "accept"
  (strcat "(progn (setq tileRad (atof (get_tile \"gp_trad\")))"
       "(setq tileSpace (atof (get_tile \"gp_spac\")))"
       "(done_dialog) (setq UserClick T))"
  )
)

请注意 AutoLISP 代码周围的所有引号。当您编写 AutoLISP 函数时,您的代码实质上是在告诉一个磁贴,“在这里,记住这个字符串,然后在用户选择您时将其传回给我。字符串(双引号内的任何内容)将处于休眠状态,直到用户选择磁贴。此时,图块将字符串传递给 AutoCAD,AutoCAD 将字符串转换为正常运行的 AutoLISP 代码并执行代码。action_tile

例如,请考虑以下表达式,该表达式连接到轻量级折线单选按钮:action_tile

(action_tile
   "gp_lw"
   "(setq plineStyle \"Light\")"
)

代码将字符串分配给单选按钮。当用户选取按钮时,字符串将传递回 AutoCAD 并直接转换为以下 AutoLISP 表达式:"(setq plineStyle \"Light\")"

(setq plineStyle "Light")

再看一个代码片段。以下是分配给“确定”按钮的表达式:action_tile

(action_tile
    "accept"
    (strcat "(progn (setq tileRad (atof (get_tile \"gp_trad\")))"
      "(setq tileSpace (atof (get_tile \"gp_spac\")))"
      "(done_dialog) (setq UserClick T))"
)

当用户单击“确定”按钮时,分配给该按钮的冗长字符串将传递给 AutoCAD,并转换为以下 AutoLISP 代码:

(progn 
   (setq tileRad (atof (get_tile "gp_trad")))
   (setq tileSpace (atof (get_tile "gp_spac")))
   (done_dialog)
   (setq UserClick T)
)

此代码执行以下操作: 它从键值为 (图块半径)和(图块间距值)的图块中检索当前值。然后将数字字符串转换为实数。对话框随函数一起终止,并将值 或 true 分配给变量 。gp_tradgp_spacatofdone_dialogTUserClick

您已完成为按钮分配操作。接下来要做的就是让它全部动起来。


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1   苏公网安备32011402011833)

GMT+8, 2024-12-15 12:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部