青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 1730|回复: 0

AutoCAD 2002 开发人员信息

[复制链接]
发表于 2011-2-24 16:13 | 显示全部楼层 |阅读模式
Visual LISP
3 D" c  ]7 E8 T* U8 w* _( YVisual LISP 编辑器中不能正确处理双字节字符。把光标放置在双字节字符后,按 Enter
6 U" X, p6 y+ `$ p) D  n7 W  O键转到下一行时,会丢失一些字符。当前不应在 Visual LISP 编辑器中编辑双字节字符。
1 d7 u, U8 k+ l6 T在 Visual LISP IDE 中,\r 转义字符不能得到回车符。而是紧跟在最后一个打印文字后面显示文字。解决方法是用
+ b+ N' j: H% I* `4 l9 S6 k3 y(CHR 13) 代替 \r。3 ^, b1 Y7 j5 l( |# H; i
Visual LISP 允许用户在编译应用程序时将 DVB 文件打包到单个 VLX 文件中,但目前无法访问这些文件。解决方法是:象
/ G- n0 R' H6 ZAutoCAD 早期版本那样,AutoLISP 应用程序所需的任何 DVB 文件必须作为单独文件包括进来。
& @  a9 v0 h9 D" I& R如果 LOAD 加载单独名称空间 VLX 时出现错误,某些函数可能在检测到错误之前已输出到当前文档名称空间。必须确保修复此错误、重新编译并重载 , W* r' }2 k; N  Q5 i: I- f
VLX 才能确保所有函数的正确版本输出到当前文档。
" T* e5 N( @: N; N: ?% {2 M在 SDI 模式下运行并且将 LISPINIT 系统变量设置为 1 时,acad.lsp 文件只加载到启动文档中,而不加载到所有在
* }# n3 {- {6 f5 ~AutoCAD 任务中打开的后续图形中。为确保将 acad.lsp 加载到所有新文档中,请将 ACADLSPASDOC
% f: w; h/ L# {( O系统变量设置为 1。
' ]6 D; c3 @2 k当 MENULOAD 命令在 MDI 中加载局部菜单时,该菜单的 MNL 文件对每个打开的文档加载一次,同时所有的用户交互操作都出现在当前文档中。为避免在用
8 B3 Y) u4 z' wAutoCAD 打开多个图形时出现多余的打印信息或用户提示,建议在 MNL LISP 代码中不要包含任何用户交互操作。请使用 . K+ z% e' f2 E2 s$ o+ w
MNL 代码为后面选择的菜单项加载所需的 LISP 文件。用 acad.lsp 或 acaddoc.lsp - n, M+ Y7 r. ]4 {- Z; [0 P& d8 N; [
文件执行打开图形时要处理的 LISP 5 a: Z& H/ H$ h# Y9 f& z, H& @, x8 i
代码。 ' D' k" s+ k( t
如果用单个正斜杠作为分隔符,使用 vla-unloadDVB 将文件名参数传递到 ActiveX , T0 ?, x% P" K- F" P
UnloadDVB 的方法将失败。调用 vla-loadDVB、vla-RunMacro 和 vla-unloadDVB
+ {3 {: E9 }: v6 `3 C. M2 B时,建议用双反斜杠作为分隔符来指定文件名参数。" ^) T- D: L/ P$ N4 ?4 x- a
试图用 S::STARTUP 函数显示命令行提示时,该提示显示在等待输入到 LISP 例程中的命令行上面。 1 E0 Z6 |7 J  r) p/ E; Z' {+ t6 a
当前解决此问题的方法是编写提示用户输入的 VBA 对话框的代码,并从 S::STARTUP 函数调用该对话框。例如,将下面的
% R* h' F7 @# F% `# yAutoLISP 代码放在 acaddoc.lsp 文件中,将导致在任何时候打开 AutoCAD
; U$ M  W6 b" W& |% P/ N图形都运行 VBA 对话框宏:# [: C7 h+ }( {  o
;; AcadDoc.Lsp
+ {$ L, h+ X2 C$ E, U(defun S::STARTUP (); o/ J; F2 G* t# E
(vl-load-com)* [) u5 `! ~' d" P
(setq acadApp (vlax-get-acad-object))1 Z  Y5 n$ u  @1 Y: ]  S
(setq advbFil "PromptUser.dvb"); h, q( P* P8 G% C/ V# [
(setq avbaMacro "RunDialog")
4 T& d- Y" d7 j;; 此代码假定 .dvb 文件在 AutoCAD 搜索路径中
) j8 t! ?' E- t0 }( ](vl-vbaload advbFil)/ c6 E- A% a  y1 q0 G! d
(vl-vbarun avbaMacro)
' V& i/ D1 h7 q- Z2 E- m+ K)8 t7 y8 [- R9 W0 s5 m; J
此代码中引用的 PromptUser.dvb 文件可从 AutoCAD ! I9 d6 D0 [6 ?' Z$ [. j
2000 网站下载:
5 W+ {% A% \1 f4 u* b% j1 \http://www.autodesk.com/autocad2000-utilities。在“下载”选项卡上,在“产品”下选择“AutoCAD”,在“版本”下选择“AutoCAD 1 U4 y8 B) x2 K2 N) D
2000”,在“类别”下选择“实用程序”。输入关键词 vba macro,然后单击“转至”。在“使用 VBA
0 ?+ N; Y0 H4 B% T2 @0 c' Z( p5 S宏在 S::STARTUP 过程中处理用户提示”中单击超文本。下载 prmtuser.zip 文件。9 I$ B0 P; [; R9 L: D. m# o
# R! R! _' @! }' w
用来防止文档被标记为“已更新”的新函数+ \( P9 }" i4 y; e7 b+ Z  C
两个新函数 acad-push-dbmod 和 acad-pop-dbmod , a4 {- ^9 A; v0 ]: }  W
可用于挂起和恢复 AutoCAD 用于跟踪图形更改的 $DBMOD 记录机制。这些函数使应用程序将更改文档作为其初始化过程的一部分,无需设置
2 w& L8 }, p" _" P* V0 `( M- j6 i) q$DBMOD 标志,也不触发不需要的保存图形查询。
- l& E; @! V- t(acad-push-dbmod) 将文档的 $DBMOD 系统变量的当前值推入内部堆栈。该函数始终返回   c$ \+ c" @! \% x
T。6 l/ P% O* ]3 X* G0 p
(acad-pop-dbmod) 将 $DBMOD 的值恢复为文档的内部堆栈上最近入栈的值。对于成功的出栈,该函数返回 0 l  h4 E: f+ J8 v7 c
T;如果堆栈为空,则返回 nil。
$ m0 g# n: B+ S( K% L  n  sacad-push-dbmod 和 acad-pop-dbmod 函数在 9 V) s) k2 N, R
acadapp.arx 中实现,acadapp.arx 默认情况下在 AutoCAD 启动时加载,但是可以禁用(如有必要)。
6 ?/ r0 H3 O- `要使用新函数,请在执行程序操作(该操作不影响“$DBMOD”值)之前,调用使 $DBMOD 值入栈,然后在执行完此操作后将该值出栈。下面是一个简单的 6 g, C% e6 V% t# Y% E* q
LISP 样例:
9 j9 n. I4 l* [& `- a. Q& r(acad-push-dbmod)
1 x6 H6 z& v, B$ W- r(setq new_line '((0 ."LINE") (100 ."AcDbEntity")
) U: `: o2 _5 d0 w+ c(8 . "0")
4 Y5 t/ C8 h) U& y, V! f; I7 c. _(100 . "AcDbLine") (10 1.0 2.0 0.0) (11 2.0
; r% {6 ~) }$ W& }+ d1.0 0.0)
/ o# |, G/ r3 {8 ](210 0.0 0.0 1.0)))
- Q+ Y7 J0 z( V+ T% U  a(entmake new_line) ; 设置 $DBMOD 1 标志
+ z, k8 R8 n  E0 b(command "_color" "2") ; 设置 $DBMOD
# \8 ]& i& n' Z# D+ Z4 I4 f4 [4 标志  n; E& j5 Q" g5 ]! j* u' [* v: ~6 I
(command "_-vports" "_SI") ; 设置 8 J( L, e0 a6 S- h$ B) ?2 D) }, I) \3 s
$DBMOD 8 标志$ \- z8 Q" V2 b# d  k' n
(command "_vpoint" "0,0,1") ; 设置
' L0 [3 c- r2 t7 W7 `9 U$DBMMOD 16 标志. E% @5 C) |; u0 p6 a/ M7 Z
(acad-pop-dbmod) ; $DBMOD 将再次具有调用
: N) J9 c6 o: ~- P; acad-push-dbmod 之前的值+ ~& j3 H7 o: x" O2 H9 i9 `
AutoLISP
5 A6 I7 C7 y" J6 p在包含在此 ObjectARX SDK 版本中的 AutoCAD 版本中,如果
* o! e5 V( }4 g* ~7 O( PAutoLISP 开发人员通过 *error* 机制来替换自己的错误处理程序,并且在该错误处理程序中发出 . E/ L  Y+ k4 b( c4 q3 x7 i
(command ...) 调用,则可能出现问题。AutoCAD 没有正确地清除 AutoLISP (command - M/ e' V' N6 L& F0 t8 P2 E2 `, ~
...) 所使用的 acedCommand() 函数的状态。解决此问题有一个简单的办法:在发出有用的 (command % z& X" Q$ d+ i6 g
...) 调用之前发出一个空的 (command) 调用。以下是可能发生此现象的情况样例:
4 |' a( l) ^: e) N7 r! M(defun c:bug ()
& c" M3 C3 r- l) e# \(setq *error* bUG_err)
9 P5 G2 S+ ]1 ~9 [(nentsel "\nPress escape to show the defect...")
3 C( Y' R3 Y% h* X: l) G)# ^& Z* u4 x+ h1 K0 q9 v0 f+ H2 w
(defun bug_err (s)
1 r3 J. b0 p' Q. @(command "._undo" "_end") 0 M0 y* Z, Y- N4 l
)0 u& \- e0 x+ c8 p1 F3 ~
解决办法在下面的错误处理程序中示例:# x& Q/ v1 q. i4 v1 V" V& T
(defun bug_err (s) (command) ; 清除 (command , _9 G9 S$ W9 ^$ l
...) 状态# u  T6 L* T  o0 S( F7 I2 }
(command "._undo" "_end") 3 M- P4 M) ~' F4 y& [0 q* u
)
/ l& \: [1 ~: _1 H  OActive X/ j. f3 w) j9 w: b4 m
如果要加载 acad.dvb 文件,则不能打开具有嵌入工程的文档(智能文档)。嵌入工程包含有 $ c. f! k- \! T7 d
AcadStartup()宏,可以访问 Application 对象的特性和方法。要在这种情况下安全地加载智能文档,先要加载
& x, j; ?' ~6 v% p* M) b8 o5 A! `/ Aacadvba.arx(可使用 APPLOAD 命令直接加载,也可以执行任何 VBA 命令间接加载)。一旦成功加载 ( |7 ~! \  G( \2 g4 E, ^$ V7 d
acadvba.arx,智能文档即可安全地打开。
7 ^) L- w0 r& t. t& P4 k# cMicrosoft Office
) D5 ~2 k- j$ a; S4 G7 B0 r; N! n如果服务器安装的是非英文版的 Microsoft Office,则安装带有 2 t# h$ _9 H# j* \% |' t: U
VBA 选项的 AutoCAD 时,将不安装 VBA选项。
+ p  ^& H8 ^8 R& X+ @; R开发人员帮助
" @& b$ K$ G: }5 ?! @/ n& iActiveX and VBA Developer's Guide 不再位于
$ i+ u3 z$ [9 J" _7 C! o% cVBA IDE 的帮助菜单中。要联机查看该手册,请在 AutoCAD 窗口中单击以激活它。在“帮助”菜单的“内容”选项卡上选择“ActiveX
" j; R- X! j3 j7 ~. m和 VBA”,然后选择“ActiveX and VBA Developer's Guide”。6 b$ ~5 S0 [! A2 G8 l" W* w: B- z+ S
控制“多文档设计环境”对话框的显示8 K8 @* a9 e5 p
“多文档设计环境”对话框允许更改 AutoLISP 环境初始化的默认功能。此对话框在下列情况下显示:
  M4 P- m! E; E& r$ GAcadLspAsDocDlg 注册键的“Do Not Show”值设置为 0 # U5 {/ c7 P( j( H
没有运行脚本、AutoLISP 或 ActiveX 应用程序
" q3 x2 _1 S& y/ lACADLSPASDOC 系统变量设置为 0 + T% v# j, a7 m3 j& ~9 y
acad.lsp 文件已在 AutoCAD 搜索路径中
" @1 a+ w2 O! O7 f! S" n  S/ Zacaddoc.lsp 文件不在 AutoCAD 搜索路径中
) }2 ~! H5 E8 A1 BSDI 系统变量设置为 03 L7 K5 v& W  K( e& H  h
如果所有这些条件都为真,则在每个任务中首次打开第二个文档时,将显示“多文档设计环境”对话框。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2025-5-16 12:23 , Processed in 0.079519 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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