Safearray errors
CADForums.net Forum Index CADForums.net
Discussion of AutoCAD and other CAD software.
 
 FAQFAQ   MemberlistMemberlist     RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
 
Google
 
Web cadforums.net
Safearray errors

 
Post new topic   Reply to topic    CADForums.net Forum Index -> Customization
Author Message
rmp605
Guest





Posted: Wed Jan 05, 2005 11:05 pm    Post subject: Safearray errors Reply with quote

When I run the test code below, I get an error message

error: Automation Error. Incorrect SafeArray dimension

in the last function, vla-add3Dmesh. If I try to inspect the value of arraySpace at any point after vlax-make-safearray, I get the message

error: ActiveX Server returned an error: Invalid index

What am I doing wrong?

-- Rick

[pre]
;;; Load ActiveX functionality
(vl-load-com)

;;; Define *ModelSpace* global variable
(setq *ModelSpace*
(vla-get-ModelSpace
(vla-get-ActiveDocument (vlax-get-acad-object))
)
)

(defun C:TestFun ( / SurfaceCoords vla_SurfaceCoords arraySpace)
(setq SurfaceCoords
(quote
(((-255.483 36.2336 30.7249)
(-255.41 35.7226 30.2416)
(-255.428 37.0652 32.1144)
(-255.421 36.6692 31.5674)
)
((-142.4 36.0864 23.2249)
(-142.709 35.6735 22.7416)
(-141.773 36.636 24.6144)
(-142.048 36.351 24.0674)
)
((-76.1623 -18.4176 15.7249)
(-76.6493 -18.5888 15.2416)
(-75.336 -18.3088 17.1144)
(-75.723 -18.3929 16.5674)
)
((-54.1702 -71.7072 8.22493)
(-54.6856 -71.6791 7.74164)
(-53.3652 -71.9229 9.61438)
(-53.7549 -71.8525 9.06744)
)
((-51.3688 -100.536 0.72493)
(-51.8688 -100.407 0.241643)
(-50.6212 -100.904 2.11438)
(-50.9897 -100.759 1.56744)
)
)
)
)
(setq arraySpace
(vlax-make-safearray
vlax-vbdouble
(cons 0 4)
(cons 0 3)
(cons 0 2)
)
)
(setq vla_SurfaceCoords
(vlax-make-variant
(vlax-safearray-fill arraySpace SurfaceCoords)
)
)
(vla-add3Dmesh *ModelSpace* 5 4 vla_SurfaceCoords)
)
[/pre]

Back to top
Jeff Mishler
Guest





Posted: Wed Jan 05, 2005 11:55 pm    Post subject: Re: Safearray errors Reply with quote

Rick,
First off, work backwards to see the input required......create a mesh in
the drawing and inspect the coordinates property. In this case, you need to
provide a one dimensional array (x1 y1 z1 x2 y2 z2 .... etc):

Command: (setq test (vlax-ename->vla-object (car (entsel))))

Select object: #<VLA-OBJECT IAcadPolygonMesh 0200ded4>

Command: (setq coords (vla-get-coordinates test))
#<variant 8197 ...>

Command: (setq var-val(vlax-variant-value coords))
#<safearray...>

Command: (setq safaray(vlax-safearray->list var-val))
(3.9036 1.40148 0.0 6.36601 1.32521 0.0 4.41899 3.02225 0.0 7.58768 3.63242
0.0
10.5846 2.52648 0.0 14.3641 1.13453 0.0 14.8222 5.0625 0.0 10.4891 6.47352
0.0
7.74039 7.94174 0.0 7.5495 7.99894 0.0 10.9282 8.57097 0.0 13.3333 6.85487
0.0
14.7268 5.19597 0.0 17.0556 1.91631 0.0 18.0482 8.13242 0.0 11.4054 8.30403
0.0
3.61727 7.99894 0.0 1.7466 5.55826 0.0 2.5674 3.28919 0.0 6.15604 2.29767
0.0)


For future reference, you can dispense (in most cases) with the creation of
the safeaarrays and variants if you use the form
(vlax-invoke *modelspace* 'add3dmesh 5 4 SurfaceCoords);making sure that
SurfaceCoords is in the required list format which you can verify by using
the same technique I used above:

Command: (setq coord-list (vlax-get test 'coordinates))
(3.9036 1.40148 0.0 6.36601 1.32521 0.0 4.41899 3.02225 0.0 7.58768 3.63242
0.0
10.5846 2.52648 0.0 14.3641 1.13453 0.0 14.8222 5.0625 0.0 10.4891 6.47352
0.0
7.74039 7.94174 0.0 7.5495 7.99894 0.0 10.9282 8.57097 0.0 13.3333 6.85487
0.0
14.7268 5.19597 0.0 17.0556 1.91631 0.0 18.0482 8.13242 0.0 11.4054 8.30403
0.0
3.61727 7.99894 0.0 1.7466 5.55826 0.0 2.5674 3.28919 0.0 6.15604 2.29767
0.0)


--
Jeff
check out www.cadvault.com
"rmp605" <nospam@address.withheld> wrote in message
news:15543388.1104948385974.JavaMail.jive@jiveforum1.autodesk.com...
Quote:
When I run the test code below, I get an error message

error: Automation Error. Incorrect SafeArray dimension

in the last function, vla-add3Dmesh. If I try to inspect the value of
arraySpace at any point after vlax-make-safearray, I get the message

error: ActiveX Server returned an error: Invalid index

What am I doing wrong?

-- Rick

[pre]
;;; Load ActiveX functionality
(vl-load-com)

;;; Define *ModelSpace* global variable
(setq *ModelSpace*
(vla-get-ModelSpace
(vla-get-ActiveDocument (vlax-get-acad-object))
)
)

(defun C:TestFun ( / SurfaceCoords vla_SurfaceCoords arraySpace)
(setq SurfaceCoords
(quote
(((-255.483 36.2336 30.7249)
(-255.41 35.7226 30.2416)
(-255.428 37.0652 32.1144)
(-255.421 36.6692 31.5674)
)
((-142.4 36.0864 23.2249)
(-142.709 35.6735 22.7416)
(-141.773 36.636 24.6144)
(-142.048 36.351 24.0674)
)
((-76.1623 -18.4176 15.7249)
(-76.6493 -18.5888 15.2416)
(-75.336 -18.3088 17.1144)
(-75.723 -18.3929 16.5674)
)
((-54.1702 -71.7072 8.22493)
(-54.6856 -71.6791 7.74164)
(-53.3652 -71.9229 9.61438)
(-53.7549 -71.8525 9.06744)
)
((-51.3688 -100.536 0.72493)
(-51.8688 -100.407 0.241643)
(-50.6212 -100.904 2.11438)
(-50.9897 -100.759 1.56744)
)
)
)
)
(setq arraySpace
(vlax-make-safearray
vlax-vbdouble
(cons 0 4)
(cons 0 3)
(cons 0 2)
)
)
(setq vla_SurfaceCoords
(vlax-make-variant
(vlax-safearray-fill arraySpace SurfaceCoords)
)
)
(vla-add3Dmesh *ModelSpace* 5 4 vla_SurfaceCoords)
)
[/pre]
Back to top
 
Post new topic   Reply to topic    CADForums.net Forum Index -> Customization All times are GMT
Page 1 of 1

 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum




Windows Server DSP VoIP Electronics New Topics
Contact Us
Powered by phpBB