一、LSP新增函数:
% t2 \( f0 A' A, k) A& ]1、计算从曲线开始到指定参数的长度vlax-curve-getDistAtParam
" s* k: z* ?# z( `6 q) ] ~函数调用形式:* b. O' O8 [* C3 b2 C$ J9 W F- ]# j1 Y
(vlax-curve-getDistAtParam curve-obj param)
/ V0 G2 M1 }$ J4 F/ ^8 j1 o* l! e参数:- } j. o) Z1 c) N. d! P
curve-obj 类型:Ads_name 意义:实体
3 k6 e& ~+ x$ B9 l8 N, [param 类型:正整数 意义:当前曲线的节点
4 c: z" k! w& j9 J- b返回值:& u k# f8 i' H2 Q+ E/ t1 v% I8 _
如果成功返回从当前曲线的开始到指定节点的长度,否则返回nil
2 ]! Z( V; s' T M; m8 A. G/ R, V; C4 k6 ~& q) Y- E; p0 x
2、计算从曲线开始到指定点的长度vlax-curve- getDistAtPoint
1 w3 p! U3 F9 n! o: @函数调用形式:
2 [4 v7 x* s, q4 e' g; q; `(vlax-curve-getDistAtPoint curve-obj point)
- e% ^; @2 [' l [7 e0 T; X参数:
% S/ z2 N8 [ acurve-obj 类型:Ads_name 意义:实体
. i9 B) r8 w' _ [" OPoint 类型:Ads_point 意义:当前指定点+ e: m0 s/ s2 o( X2 A
返回值:
t; V n; m2 O" L6 C# p ^2 W如果成功返回从当前曲线的开始到指定点的长度,否则返回nil
6 x7 G# w+ i. n8 S' S9 y2 |+ Q) }
) E2 u' a9 g. X3、返回曲线最后节点数vlax-curve-getEndParam* k9 [8 l( N9 O) V. y9 h! Q
函数调用形式:5 a/ }+ |, n' t6 _ z: ?5 o
(vlax-curve-getEndParam curve-obj)
- r8 F7 u' ?( K" Q& w. P% o参数:
0 \5 @" x( k& z! E6 icurve-obj 类型:Ads_name 意义:实体' t9 {, Q3 H$ Y8 h, B; j
返回值:
2 O5 Q v- W" {1 v! ?0 ~$ A& Z2 q/ W如果成功返回当前曲线的最后节点数,否则返回nil
$ g; j8 t+ G# l0 s) b: r# B4 m
! Y8 x, e; T5 e& L4、返回曲线最后节点值(WCS中)vlax-curve- getEndPoint- e$ R/ v1 g! K9 n8 w- L; y
函数调用形式:- S$ T7 ^" ~. t$ S
(vlax-curve-getEndParam curve-obj) 9 q2 G1 U* `& |3 r. F, i
参数:
: v) c2 k( L1 Dcurve-obj 类型:Ads_name 意义:实体5 S; ?8 U1 C+ m+ j" J9 H7 r6 Y
返回值:$ Z: m1 I- m4 I! E( e7 P6 P
如果成功返回当前曲线的最后节点值,否则返回nil & \8 R- [. m/ X, X" c3 E% ?* }- J: D4 M
9 a Z# S0 J @+ L
5、根据指定从曲线端点距离返回曲线上节点参数vlax-curve-getParamAtDist7 [* Q( k, T3 i# Y- o' e8 k! S
函数调用形式:0 ? _& q' Y) T7 \) O
(vlax-curve-getParamAtDist curve-obj dist)
/ [- ? y" z# T- j4 u, T参数:
& F/ x: T7 u+ A( m) E% B! I) `curve-obj 类型:Ads_name 意义:实体
- A6 P' i7 r7 E9 R, Vdist 类型:ads_real 意义:指定从曲线端点距离. v! _8 i9 j( I( O0 b+ z
返回值:7 ~+ k# v5 p4 ]5 m
如果成功根据指定从曲线端点距离返回曲线上节点参数,否则返回nil
2 P9 ^# j; x% S- K/ t9 F: s( |* r5 k" y
6、根据指定曲线点返回曲线上节点参数vlax-curve-getParamAtPoint* _7 |3 F( S% L+ |/ E1 N9 @" j
函数调用形式:
! B8 s( H5 U9 h# k% V7 W( h B U(vlax-curve-getParamAtPoint curve-obj point) ^* e+ N$ I, d% Q6 R) c2 A
参数:
- A2 ^- D8 l( C: R! b4 L; s! zcurve-obj 类型:Ads_name 意义:实体
$ C7 n4 ~- Z0 upoint 类型:ads_point 意义:指定曲线点
2 A3 @8 p' B; T' |+ x. ?返回值:' R* a& d' l; y4 w. `$ `" G8 m1 @
如果成功根据指定曲线点返回曲线上节点参数,否则返回nil
1 l" p {9 ]: ~5 u( g/ D! |2 ], R6 r6 s' k& T ^! \
7、根据用户指定的距离返回曲线上点(在WCS中)vlax-curve-getPointAtDist' U& t( C: ]7 K* q" K: w
函数调用形式:
' T" a) t% Z+ T8 u7 ^2 H(vlax-curve-getPointAtDist curve-obj dist)
1 h, W" x0 {0 P2 H参数:
* v7 Q+ G- B+ q$ Hcurve-obj 类型:Ads_name 意义:实体
- V% O9 [& R" `+ N8 V3 g9 jdist 类型:ads_real 意义:指定从曲线端点距离; P+ k3 S. A% m% i8 {. y/ ]
返回值:
( _; k7 I: a0 M! y7 ?如果成功根据指定从曲线端点距离返回曲线上点,否则返回nil
' @& ^! a9 ?' S5 i* G# p) H# X: f7 L6 h& H5 F; @9 _# `# ^4 g
8、根据用户指定的节点参数返回曲线上点(在WCS中)vlax-curve-getPointAtParam
( ?1 L& R- {# i/ c* {* |! q函数调用形式:6 B* t7 G4 N# b( J# D
(vlax-curve-getPointAtParam curve-obj param) : s6 A9 _% M& N/ e0 a
参数:3 W- ]- a1 w3 z, L" I- j1 C
curve-obj 类型:Ads_name 意义:实体
" }' \2 f4 M0 j- ^2 zparam 类型:正整数 意义:当前曲线的节点 ) b- I0 x6 F9 W( r
返回值:
# H9 Y: d% `. u# [' g如果成功根据指定从曲线端点距离返回曲线上点,否则返回nil " V ?0 I; t$ }+ Y9 f, H
1 |3 u; j) C# }! E0 T' r9、返回曲线起始节点参数vlax-curve-getStartParam
7 P/ d4 S9 u" e; q" l& W函数调用形式:/ f" a( x( }) h
(vlax-curve-getStartParam curve-obj) 7 Z8 Q( r0 [* w5 ]6 M4 @
参数:
, {) M, b" }% {: e% Z) f8 K" [) Xcurve-obj 类型:Ads_name 意义:实体
/ Z( [, `7 E& b) A返回值:, g% H, V# ~ K2 l: i
如果成功返回当前曲线的起始节点参数,否则返回nil
[4 a$ k' s% O# U' y( o1 m
Q% h8 K+ {+ P. ^. O10、返回曲线起始节点值(WCS中)vlax-curve- getStartPoint
- Q8 I1 K$ E" G! [! { J函数调用形式:
3 i, o. c. F2 y4 S: L- a2 h1 n(vlax-curve-getStartParam curve-obj) ' I% i, @5 Z* y2 s( X0 F9 W' X
参数:
' a: |3 z; K$ O A/ Ycurve-obj 类型:Ads_name 意义:实体
% o1 w6 S9 s2 |; g) v返回值:0 w# r; [6 h' ^& h$ p; ?
如果成功返回当前曲线的起始节点值,否则返回nil
: K. `# b6 N$ i& \2 t: X2 J) i
n0 q' v( I$ n& c- Q- I9 u3 _8 ~& I' S' P2 \
二、VBA新增对象
! d1 U1 K- W6 m: l1 p* a/ R1、IIcadPlotConfiguration对象
; s+ I0 o( g) X, W9 C% N( _属性:2 \2 H% |) ]7 m5 o4 z
Name:String 指定的对象名称! p2 w' ~7 f+ e) i4 X0 _
CanonicalMediaName:String 指定的规格纸张名称
! V- q* L6 ]; g- H( ^$ l; DCenterPlot:BOOL 指定的居中方式
. a/ _" ^& z6 t GConfigName:String 绘图区配置名称! _! T0 j ?" o. }, s/ Q
PaperUnits:IcPlotPaperUnits 显示版面或绘图区配置的单位# e1 e, x+ |) x# D. q
PlotHidden:BOOL 绘图过程中对象是否隐藏' ?9 m) x! N1 F3 a
PlotOrigin:IIcadPoint 版面坐标(WCS坐标系)
# t! l3 G# D B ?2 oPlotRotation IcPlotRotation 版面或绘图区配置的旋转角
2 f( }+ ~4 D; i. }5 }/ kPlotType IcPlotType 版面或绘图区配置的类型
$ R' A) a$ h8 S& u) s5 Y SPlotViewportBorders BOOL 是否绘制视口边界
+ c+ T4 j) [4 hPlotViewportsFirst BOOL 是否先绘制图纸空间的多边型视口+ ?; ]- K) v* v% V+ k
PlotWithLineweights BOOL 采用绘制文件的线宽,或采用图纸的线宽
7 h' [: u5 _: d( c# JPlotWithPlotStyles BOOL采用绘制文件的线型,或采用图纸的线型" S+ O( E- i, o0 n
ScaleLineweights BOOL 当绘制版面时是否几何缩放线宽8 [0 N s# D3 v
ShowPlotStyles BOOL 是否将绘制类型应用倒绘图 M8 P: g7 I$ d- H' v: S( Y& _5 {
StandardScale IcPlotScale 版面或绘制配置的标准缩放9 ?# q" |& @; D) c: }
StyleSheet String 版面或绘制配置的类型单
* }- |/ S) K0 I9 f5 D; W* T$ zUseStandardScale BOOL 绘制区采用标准缩放还是自定义缩放
/ A. P- w* p& D$ ?" KViewToPlot String 绘图区的视图名称
1 Q6 D9 M7 v" S F方法:
- d1 n% E" [9 S! T4 Y取得绘图区视图的大小7 J" M* J9 Y/ f8 p$ B% ^( Q
HRESULT GetPaperSize([out] double* Width, [out] double* Height);8 u* B4 Q" \/ C2 P- m7 ~9 S: O
/ a& t7 `" M: r' J* }取得绘图区版面窗口坐标
0 e/ `+ @. X8 {, XHRESULT GetWindowToPlot([out] IIcadPoint** ppLowerLeft, [out] IIcadPoint** ppUpperRight);! ^( Q5 J B" c! S! H S% q
1 r! H/ M# W1 a8 n5 w* G: @9 b7 }( d- s设置绘图区版面窗口坐标. D t) h$ k* G1 H1 c( x8 i
HRESULT SetWindowToPlot([in] IIcadPoint* pLowerLeft, [in] IIcadPoint* pUpperRight);1 s1 G% w4 a+ \( |
, q5 ?' T( S) h% j
设置自定义缩放值
1 l2 d& W( k3 I9 eHRESULT SetCustomScale([in] double Numerator, [in] double Denominator); E8 z0 n/ T5 A* q- o2 s# E
8 M. n4 k; l ?2 H
取得自定义缩放值) f# ] p' l c" V# [5 ]. e4 B8 ~
HRESULT GetCustomScale([out] double* pNumerator, [out] double* pDenominator);3 c" o% M5 X- E9 c+ u
5 F' m% k' T/ f$ R/ F取得所有可用绘制驱动名称6 E4 \$ B1 B; b* c
HRESULT GetPlotDeviceNames([out, retval] VARIANT* pArray);4 K3 Q7 O. d$ x1 W+ {
0 ]/ e$ q P4 X9 B' v8 P% { f5 w
取得所有可用绘制类型表名称& l& b1 M, i$ s" X
HRESULT GetPlotStyleTableNames([out, retval] VARIANT* pArray);
/ M( {2 b: B9 x* b4 f% f! [2 D( e4 A( _6 o W0 O) D) I
取得图纸边界外空白区大小+ ^( F6 {' U( X+ @3 d8 ]
HRESULT GetPaperMargins([out] IIcadPoint** ppLowerLeft, [out] IIcadPoint** ppUpperRight);
' E/ k1 U' S. ~4 Z2 S4 u
/ @2 g8 c# L7 E9 H/ c3 q复制指定的绘制配置
" v% S P& M# }8 A t, ]HRESULT CopyFrom([in] IIcadPlotConfiguration* pPlotConfig);
$ z4 p$ W. T5 V# z. Z" W% s8 {) d+ [: U" G) O! ~" w9 x
取得指定的绘制驱动的所有可用规范设备名称
! ~! o/ a9 I( a( XHRESULT GetCanonicalMediaNames([out, retval] VARIANT* pArray);
& }0 p$ } J* S
2 s8 @: @0 L% o) ?: N$ `0 l5 A取得本地规范设备名称的版本
2 `+ O: P z8 c2 s- uHRESULT GetLocaleMediaName([out, retval] BSTR* pName);& V! m3 o- m9 z8 m
! |! _' |7 ^/ y, n( t
更新当前系统状态的绘制、规范设备、和绘制类型表信息- L) P! k/ u, q3 G
HRESULT RefreshPlotDeviceInfo();
2 {4 j$ G* x& N" }' w
' B3 v4 P5 G. m8 M! K绘制配置是仅应用到模型空间还是所有版面
9 ]$ w9 v% \7 Z5 ^ bHRESULT ModelType([out, retval] VARIANT_BOOL* pVal);
/ B) n/ ?1 ^2 T# o4 W4 y* u& E
( i" v8 x2 P, h5 i+ c1 O2、 IIcadPlotConfigurations 对象! \% ]' `* g. ?5 q& B
属性:+ ]7 t Z, d# m9 t0 x
Application IIcadApplication 取得应用程序对象$ w2 Y7 W* g; y. H J( G
Count long 取得包含条目数
% ^) N, ~# C0 i" N8 YParent IIcadDocument 取得父文档对象
7 o- [! C: z- d7 ?* a# ]9 B9 }方法:2 @' k% o6 f0 s
增加一个新的绘制配置
, d% K" n. _% x$ C+ v# OHRESULT Add ([in] BSTR Name, [out, retval] IIcadPlotConfiguration** ppItem);" l- @+ s. d3 I6 n! R# V1 {2 v. k
+ C, k. n* u' C9 d取得指定的绘制配置* Q8 l- }3 y E7 s9 R: N& h9 s7 j
HRESULT Item([in] VARIANT Index, [out, retval] IIcadPlotConfiguration** ppItem);4 T. K6 \+ A5 n( `
+ d W# r* f0 M! L3、IIcadLayout
9 L& K9 y& ~+ n; G9 _+ G属性:; B: i5 d: ]! Z& d+ s& ^& V
Block IIcadBlock 取得版面的联合块
( J( V' A- m+ S( zTabOrder long 版面的tab顺序9 H. Y, G/ h# Q; ]4 c$ Y
# r* [" w P, Y$ |" g3 c `7 B
4、IIcadLayouts 对象
+ [5 u) V8 y6 s; Q% U- f属性:
# n+ k- I, w6 vApplication IIcadApplication取得应用程序对象
) I- k" O1 Z! ?, e9 s- OCoun long取得包含条目数
8 v R) i: c/ K" @Parent IIcadDocument 取得父文档对象
# L8 X6 K% e# g4 M方法:
6 X( }( v! s2 A& G增加一个新的版面. x) J ?, {5 l) `
HRESULT Add ([in] BSTR Name, [out, retval] IIcadLayout** ppItem);
, E a& }+ c0 i1 \ R8 E8 V9 H o4 i$ H1 f+ Z+ b3 M( p- |
取得指定的版面4 ?4 w6 _* O/ g; G! z) F; _
HRESULT Item([in] VARIANT Index, [out, retval] IIcadLayout** ppItem);
! e7 M# h& I9 x3 m/ W" V
( \" I$ e- ^) `* |; F$ Y5、IIcadXRecord对象1 F& S1 i' S! [8 U+ f9 D- I
属性:
S0 K1 B# S3 K6 oName:String 指定的对象名称
$ Z. R) I, ]3 |5 I: Y2 qTranslateIDs BOOL 指定在深度克隆或写块克隆时是否转换对象ID5 e# V$ [) t. d
方法:
V$ F% r1 n5 M" f, I; z; b; h取得联合字典的扩展数据
# l. H: T, z C. ~) U* B; lHRESULT GetXRecordData([out] VARIANT* XRecordDataType, [out] VARIANT* XRecordDataValue);
j$ N8 Q% a' J+ f/ H2 m" C" z( x. q1 `2 |
设置联合字典的扩展数据
. K6 M5 K+ Z( ]4 B2 Y9 RHRESULT SetXRecordData([in] VARIANT XRecordDataType, [in] VARIANT XRecordDataValue);3 I# ?0 l3 }" L
7 K% q1 X$ a1 A% B
6、IIcadDictionary对象+ G( H' W7 w$ Z7 b
属性4 S' M" s# W. {# c4 G
Name:String 指定的对象名称
, \+ _* N6 W/ X方法:" i7 a" @; p& I! k2 x+ p
为命名字典增加一个对象
! p/ e) D+ ^ d& ~- h5 IHRESULT AddObject([in] BSTR Keyword, [in] BSTR ObjectName, [out, retval] IDispatch** ppNewObj); // IIcadDbItem** ?
4 G* B- g) W0 }, Q: M7 P9 `; g6 [; P3 b3 R$ H2 g* [9 v$ a
取得字典中对象名称(关键字)# }; |0 ?1 N' t3 R9 z6 g4 C
HRESULT GetName([in] IDispatch* pObject, [out, retval] BSTR* bstrName); . C, `' r/ T; M( X
5 A% L% { h5 ]: g$ z
根据指定对象名称(关键字)返回对象1 y: d9 T" h' }8 h
HRESULT GetObject([in] BSTR Name, [out, retval] IDispatch** ppObj);
1 c: Z% F; s7 K4 R* V% Q
) y; |/ B% b1 n1 O' ^, Y* Z根据指定对象名称(关键字)从字典中删除对象* n" x! d* |- n7 ]: n/ i2 E5 M
HRESULT Remove([in] BSTR Name, [out, retval] IDispatch** ppObj);
6 {% @5 l3 x. T3 i/ {. N7 E7 q0 Z" }/ W$ M9 S& G7 B1 }4 }3 T
重命名字典中条目名称: _* }1 X, i) r. q
HRESULT Rename([in] BSTR OldName, [in] BSTR NewName);
8 I8 w! r) f/ f6 f
( y3 n$ w7 X" {" t' f+ @9 b根据指定对象名称(关键字)从字典中替换对象( S$ B/ V4 x: }9 \
HRESULT Replace([in] BSTR OldName, [in] IDispatch* pObj);
7 Y+ u' ?: ]2 f( i$ K" f. R
( H1 }' Q" q s N根据索引取得字典中对象
) d+ G7 B8 S" {7 ?" f& v4 ?HRESULT Item([in] VARIANT Index, [out, retval] IDispatch** ppItem);
7 Q/ @6 n* b( p& p5 _
' D- ?. e3 K/ M9 R2 @1 K; \取得字典条目数
' i+ F5 R" q |$ H. Y, q4 ~! aHRESULT Count([out, retval] long* pVal);
4 E1 R& }* K7 F7 ^1 a: y M# i2 L& T4 O9 E- S. Y2 M2 A, g9 c0 A
在字典中增加扩展数据
/ f+ t, @0 O) F6 `/ _5 O8 p3 ?HRESULT AddXRecord([in] BSTR Keyword, [out, retval] IIcadXRecord** ppNewXRecord);9 K$ o! G& L0 O" A* o/ u
, m, U6 a* Q6 f+ g9 f: @
7、IIcadDictionaries 对象
, N) J4 I. @7 Y7 u+ Y" W, G5 {8 v3 |属性:
2 d- p; Z) i$ s- ?) F+ hApplication IIcadApplication取得应用程序对象
7 l0 R' r9 Q9 B dCoun long取得包含条目数1 C# s: j. f/ J( j9 t( z
Parent IIcadDocument 取得父文档对象' Q( ~+ R5 P* R9 S! k
方法) C- j" J) n% y4 s
增加一个新的字典
& Y, O: @ m3 K; F% T- d+ ZHRESULT Add ([in] BSTR Name, [out, retval] IIcadDictionary** ppItem);' ]! Z4 u# O" l& K" B6 o, O
+ v; u, y: T* Z7 P) s* N- o
取得指定的字典: X; s8 G/ k- F4 [0 p- r: W
HRESULT Item([in] VARIANT Index, [out, retval] IIcadDictionary** ppItem);9 k% k% _ [ r4 [0 d: P; c2 d9 G
; ]# a! P- a& K7 ~- N8、IIcadGroup对象' }) P% R$ U3 `: _! ?
属性:. O! y8 ~% l0 R
Name:String 指定的对象名称
4 l4 Z2 y k# U' s& j8 b$ E方法:
' D9 L% ], M: O& h$ U6 Q; D根据指定索引取得组中实体对象, R# X Q: _ R8 E, w
HRESULT Item([in] long Index, [out, retval] IIcadEntity** ppEntity);
4 W5 d: z5 j/ m% w. s" v5 ]" p! r) j2 l, `# D4 ^
取得组中实体数
" o' B! m: m1 M2 S/ iHRESULT Count([out, retval] long* pVal);
) K. R2 r( f1 K
5 B+ Q. `. ~. w9 p9 i' J所在图层
- V, I! l( a4 }! QHRESULT Layer([in] BSTR layer);
4 G8 T% r W. u/ ~# }6 E+ |7 L8 ^: M' P4 U
实体线型% Q0 H- E2 z& }6 p4 p
HRESULT Linetype([in] BSTR linetype);
% I8 s! k% Z) @
0 ?1 x& z: I d. e% U实体线型缩放比例
K5 m, d1 Y X! k& b! sHRESULT LinetypeScale([in] double linetypeScale);
8 b9 b6 h, Z. m+ l4 y3 {6 l0 y6 Y" u& h0 ]+ Q; x
对象或应用程序的可见性
E( g A( ?5 @6 PHRESULT Visible([in] VARIANT_BOOL isVisible);0 h2 ~3 X9 u" {6 X: i
1 _. t# U8 l+ q! Q设置取得对象或选择集的高亮状态9 G- z1 b2 Q2 `) u# r: o5 C
HRESULT Highlight([in] VARIANT_BOOL HighlightFlag);
* }4 I3 w5 P' f* }6 m; [8 {/ t- a [, z; G
实体的绘制类型名称
* Q, w, V- H' P) x, iHRESULT PlotStyleName([in] BSTR plotStyleName);2 e5 A4 u1 y: Z) ^" C7 Y
0 |- [2 K0 |/ \9 s
指定个别实体或缺省线宽
- o% m$ l9 d. D* j) E- yHRESULT Lineweight([in] IcLineWeight lineWeight );. d; M+ T1 i! Y7 q. I7 c
" L/ _: b) u$ L- `( E0 ~增加一个或多个实体倒组中
! }. K* Q( Q6 L( `& U6 u& ?7 E7 yHRESULT AppendItems([in] VARIANT Objects);
: V. h% ]! B5 ~) ~; z! B- C/ B5 [# z2 I% [& N
从组中删除指定条目
! L3 u, y4 q6 ZHRESULT RemoveItems([in] VARIANT Objects);
! _; U+ D q% n- o# k5 A
4 D O6 l; {1 M! E3 y更新对象到视图
/ J( M6 A6 X$ u4 x/ n1 t+ `' D( bHRESULT Update();
: B8 Q3 R- n- {2 X. q* v( y
3 _: y1 p% y K$ y指定实体或层颜色9 B4 o0 h' m* D
HRESULT Color([in] Colors color);9 }0 s0 R, r4 w- s: j0 V
" `3 U: y4 n& G/ S, B! {
9、IIcadGroups对象* q7 C- c$ H+ n7 a6 _
属性:
/ m7 l) m1 I' Y) vApplication IIcadApplication取得应用程序对象
$ f9 { N6 }' i( Z6 Q9 cCoun long取得包含条目数+ I. q( V: P* B+ b3 ^5 U
Parent IIcadDocument 取得父文档对象
8 `5 h7 [! }: n; U方法2 x/ X0 R( V" }- N
增加一个新组
8 F% d: Q" G( h8 Q0 H+ EHRESULT Add ([in] BSTR Name, [out, retval] IIcadGroup** ppItem);- S" G, r! g P0 |( K, l a
" b/ M4 P7 b; s& y0 |
取得指定的组
! q" M* f( p: P" F P: T4 E% ]HRESULT Item([in] VARIANT Index, [out, retval] IIcadGroup** ppItem); |