明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2172|回复: 4

请高手帮我解问几个问题,谢谢您!

[复制链接]
发表于 2002-9-27 22:24:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2002-9-27 22:24:38 编辑

1、Select object: ((-1 . <Entity name: 2d63408>) (0 . "LWPOLYLINE") (5 . "24D9")
(102 . "{ACAD_REACTORS") (330 . <Entity name: 2d73718>) (102 . "}") (100 .
"AcDbEntity") (67 . 0) (8 . "JMD") (62 . 7) (6 . "CONTINUOUS") (100 .
"AcDbPolyline") (90 . 8) (70 . 128) (43 . 0.0) (38 . 89.099) (39 . 0.0) (10
4661.79 5116.93) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 4667.84 5120.92) (40 .
0.0) (41 . 0.0) (42 . 0.0) (10 4673.54 5112.29) (40 . 0.0) (41 . 0.0) (42 .
0.0) (10 4686.92 5121.12) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 4681.43 5134.47)
(40 . 0.0) (41 . 0.0) (42 . 0.0) (10 4668.8 5146.68) (40 . 0.0) (41 . 0.0) (42
. 0.0) (10 4657.76 5152.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 4643.43 5131.2)
(40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))

以上中的(102 . "{ACAD_REACTORS"}这种实体是如何生成的?
怎么才能选择到一个程序生成的所有实体?
程序运行生成几百个单个实体,我想把它构造成一个(102 . "{ACAD_REACTORS"}。

2、Command: (command "plot")
plot Detailed plot configuration? [Yes/No] <No>: nil
Detailed plot configuration? [Yes/No] <No>: y
Enter a layout name or [?] <Model>:
Enter an output device name or [?] <hp800.pc3>:
Enter paper size or [?] <自定义: 1 880 x 1150 毫米>:
在此能不能自定义纸张的大小,用何办法?在LISP中如何读取通过"Enter paper size or [?] <自定义: 1 880 x 1150 毫米>:?"所查到的纸张类型。

3、如何改变AutoCAD2002标题栏的内容
如:AutoCAD2002 - [E:\Drawing2.dwg]
改为:MYCAD - [E:\Drawing2.dwg]

4、我不想在ACAD.PGP里不添加"REN,REN,       0,File specification: ,4",
但又想在AutoCAD中使用REN,用SHELL能实现吗?是否还有更好的方法?具体是怎么实现,请高手赐教。
发表于 2002-9-29 16:48:00 | 显示全部楼层

第一个问题的回应...

这种对象称为“反应器”,相关详细资料参见《Visual LISP程序设计——技巧与范例》第九章,专门讨论反应器的实用技术。摘个片段请参考:

“反应器”是Visual LISP中极具特色的功能,是面向专业用户程序设计的重大进步。以前只能在 ARX 程序中做这件事。比如“对象反应器”是用相关函数将反应器链接到 AutoCAD 图形对象上,之后,如果在这个对象上发生了事先约定的某种“事件”时,就会有反应,并且通过“回调函数”这样一个“器”,执行事先设定好的处理过程。具有对象反应器的AutoCAD对象,是相当聪明的智能化对象。
例如下面的程序(参见T901.LSP):
;-----------------------------------------------------------------------
(VL-Load-Com)
(Defun Line-C (notifier-object reactor-object parameter-list)
       (SetQ cen (HandEnt (VLR-Data reactor-object)))
       (SetQ len (VLAX-VLA-Object->EName notifier-object)
             lel (EntGet len)
             pt1 (Cdr (Assoc 10 lel))
             pt2 (Cdr (Assoc 11 lel))
       )
       (SetQ cel (EntGet cen)
             cel (Subst (VL-List* 10 pt2) (Assoc 10 cel) cel)
             cel (Subst (VL-List* 40 (/ (Distance pt1 pt2) Pi 2))
                                          (Assoc 40 cel)
                                          cel
                  )
       )
       (EntMod cel)
)

;-----------------------------------------------------------------------
(Defun C:TR01 ()
      (SetQ pt1 (GetPoint "\n起点:")
            pt2 (GetPoint pt1 "\n末点:")
      )
      (Command "line" pt1 pt2 "")
      (SetQ len (EntLast))
      (Command "circle" pt2 (/ (Distance pt1 pt2) Pi 2))
      (SetQ chl (Cdr (Assoc 5 (EntGet (EntLast)))))
      (SetQ rlt (Cons (VLAX-EName->VLA-Object len) '()))
      (SetQ vrl (VLR-Pers (VLR-Object-Reactor rlt chl
                                            '((:vlr-modified . Line-C))
                              )
                  )
      )
      (PrinC "\n已建立的反应器有: ")(PrinC (VLR-Reactors))
      (PrinC)
)
;-----------------------------------------------------------------------

这个趣味程序将按照指定的两个点生成一条直线,并以线的末点为圆心,生成一个周长等于直线长度的圆。然后,给直线链接上一个“对象反应器”。
这样,一旦操作者修改了这条直线(例如:移动、拉伸、夹点编辑等),除了直线会按修改操作改变之外,与之相关的圆会由反应器回调函数按照“以线末点为圆心,周长等于线长”的规则更新。
带有这样对象的图形文件,被重新打开之后,反应器仍然链接在相关对象上,只要回调函数已经装入,就可以保持这些直线被编辑之后的相关动作。如果回调函数没有装入,会提示:; 错误: no function definition: LINE-C。
这个简短的趣味试验程序,比较粗糙地表现了反应器的应用和效果。
反应器机制,就象给一个盲聋者设计的高技术装置,虽然他不能听和看,却可以知道想要知道的周围事物。
反应器机制,给程序增加了一个重要的功能:“反馈”。以前的 AutoLISP 程序,是一种开环机制,生成了对象,就不去管他了,甚至有点任人宰割的味道。有了反应器,加入了反馈环节,就成了闭环系统,既能够生成对象,也能够始终监控这个对象,对于感兴趣的事情做出相应的处理。
 楼主| 发表于 2002-9-29 17:56:00 | 显示全部楼层

衷心谢谢陈教师!剩下的问题是不是很难做到?请赐教。

[此贴子已经被作者于2002-9-29 17:56:35编辑过]
 楼主| 发表于 2002-9-28 17:48:00 | 显示全部楼层

没有人会吗?提个想法也好。谢谢!

发表于 2002-9-30 08:09:00 | 显示全部楼层

第三个问题在二次开发栏目明总和金版主用VBA和C++分别给出了实现

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

本版积分规则

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

GMT+8, 2025-1-15 23:37 , Processed in 0.170483 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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