CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2024 开发者帮助

更新 gp:Calculate-and-Draw-Tiles

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

更新 gp:Calculate-and-Draw-Tiles

在本课的前面,我们指出,当从反应器回调调用时,需要强制使用 ActiveX 来创建对象。这意味着如有必要,将覆盖用户选择的对象创建样式(ActiveX 或 )。您刚刚更新的代码(在函数中)包含对切片绘制例程的以下调用:gp:Calculate-and-Draw-Tilesentmakecommandgp:command-ended

(setq tileList (gp:Calculate-and-Draw-Tiles
    ;; path data list without correct tile list.
    NewReactorData
    ;; Object creation function.
    ;; Within a reactor this *MUST* be ActiveX.
    "ActiveX"
   )
)

两个参数被传递给:(原始关联列表形式的列表)和字符串(将设置对象创建样式)。但是看看 的当前定义。(如果您忘记了,此函数在 gpdraw.lsp 中定义。下面是声明参数和局部变量的函数部分:gp:Calculate-and-Draw-TilesNewReactorDatagp_PathData"ActiveX"gp:Calculate-and-Draw-Tiles

(defun gp:Calculate-and-Draw-Tiles (BoundaryData /
                                    PathLength TileSpace
                                    TileRadius SpaceFilled
                                    SpaceToFill RowSpacing
                                    offsetFromCenter rowStartPoint
                                    pathWidth pathAngle
                                    ObjectCreationStyle TileList)

请注意,当前只指定了一个参数,并被标识为局部变量。查看变量的设置方式,这在函数中稍远一些:ObjectCreationStyleObjectCreationStyle

(setq ObjectCreationStyle (strcase (cdr (assoc 3 BoundaryData))))

目前,通过检索隐藏在变量(关联列表)中的值,在函数内部设置。但现在您需要能够覆盖该值。ObjectCreationStyleBoundaryData

修改 gp:Calculate-and-Draw-Tiles 以接受对象创建样式参数

  1. 将变量添加到函数参数中。ObjectCreationStyle
  2. 从局部变量中删除。ObjectCreationStyle

    该函数的语句应如下所示:defun

    (defun gp:Calculate-and-Draw-Tiles (BoundaryData ObjectCreationStyle
                                        / PathLength TileSpace
                                        TileRadius SpaceFilled
                                        SpaceToFile RowSpacing
                                        offsetFromCenter rowStartPoint
                                        pathWidth pathAngle
                                        TileList) ; remove ObjectCreationStyle from locals

    请注意,如果您将一个变量声明为参数(斜杠之前)和局部变量(斜杠之后),Visual LISP 将向您指出这一点。例如,如果同时声明为参数和变量,然后在函数上使用可视化 LISP 语法检查工具,则“生成输出”窗口中将出现以下消息:ObjectCreationStylegp:Calculate-and-Draw-Tiles

    ; *** WARNING: same symbol before and after / in arguments list: OBJECTCREATIONSTYLE
  3. 修改其中的第一个表达式,使其如下所示:setqgp:Calculate-and-Draw-Tiles
    (setq
       PathLength       (cdr (assoc 41 BoundaryData))
       TileSpace        (cdr (assoc 43 BoundaryData))
       TileRadius       (cdr (assoc 42 BoundaryData))
       SpaceToFill      (- PathLength TileRadius)
       RowSpacing       (* (+ TileSpace (* TileRadius 2.0))
                          (sin (Degrees->Radians 60))
                        )
       SpaceFilled      RowSpacing
       offsetFromCenter 0.0
       offsetDistance   (+ (* TileRadius 2.0) TileSpace) 2.0)
       rowStartPoint    (cdr (assoc 10 BoundaryData))
       pathWidth        (cdr (assoc 40 BoundaryData))
       pathAngle        (cdr (assoc 50 BoundaryData))
    ) ;_ end of setq
    
    (if (not ObjectCreationStyle)
      (setq ObjectCreationStyle (strcase (cdr (assoc 3 BoundaryData))))
    )

    的原始赋值语句已被删除。该代码现在检查是否为 提供了值。如果未设置(即值为 ),则函数会从变量中为其分配一个值。ObjectCreationStyleObjectCreationStyleObjectCreationStylenilBoundaryData

    您还需要对 进行一系列更改。gp:Calculate-and-Draw-Tiles


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2025-3-28 17:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部