Civil 3D 2011 VB.Net Maken van een Surface object

  • Edward Winter
  • Offline Onderwerp Auteur
  • Senior lid
  • Senior lid
  • Berichten: 45

Beantwoord door Edward Winter in topic Re:Civil 3D 2011 VB.Net Maken van een Surface object

Posted 24 mei 2011 08:13 #1963
Is die code van ADN of van jezelf?
In elk geval bedankt daarvoor!

Als ik de code nu zo lees, denk ik toch maar dat ik het boek van Jerry Winters ga aanschaffen. :-)

Ik ben niet van plan om serieus te gaan ontwikkelen.
Ik wilde eerst a.d.h.v. VLisp/ActiveX een eenvoudige routine maken; bijvoorbeeld voor het maken van een Surface op basis van een Point Group (name). Ik had hiervoor wat code gevonden op CADpanacea , hoe je vanuit VisualLisp, C3D objecten kan bewerken.
Maar goed, VisualLisp wordt slecht ondersteund door Autodesk als het gaat om dit soort routines.
Dus dan besluit (eerder: moet) je het op de juiste manier te doen: via .Net.
door Edward Winter

Graag Inloggen of een account aanmaken deelnemen aan het gesprek.

  • Edward Winter
  • Offline Onderwerp Auteur
  • Senior lid
  • Senior lid
  • Berichten: 45

Beantwoord door Edward Winter in topic Re:Civil 3D 2011 VB.Net Maken van een Surface object

Posted 24 mei 2011 12:43 #1964
Hmm, VB.Net of VisualLisp met ActiveX? :-)

De VL code hieronder (gevonden op: How to 'NEW' a COM object in lisp? ) werkt onder C3D 2010,2011 én 2012.


(Defun C:CreateSurface ()
(vl-load-com)
(setq prod (vlax-product-key))
(setq verstr (cond ((vl-string-search "\\R18.0\\" prod)
"7.0"
)
;;2010
((vl-string-search "\\R18.1\\" prod)
"8.0"
)
;;2011
((vl-string-search "\\R18.2\\" prod)
"9.0"
)
;;2012
)
)
(setq prodStr (strcat "AeccXUiLand.AeccApplication." verstr))
(setq datastr (strcat "AeccXLand.AeccTinCreationData." verstr))

(if (and (setq *acad* (vlax-get-acad-object))
(setq C3D (vla-getinterfaceobject *acad* prodStr))
(setq C3Ddoc (vla-get-activedocument C3D))
(setq surfs (vlax-get C3Ddoc 'surfaces))
(setq tincreationdata (vla-getinterfaceobject *acad* datastr))
)
(progn
(vlax-put tincreationdata 'baselayer "0")
(vlax-put tincreationdata 'layer "0")
(vlax-put tincreationdata 'description "Surface from Lisp")
(vlax-put tincreationdata 'name "Lisp EG")
(vlax-put tincreationdata 'style "Standard") ;;style must exist!
(setq surf (vlax-invoke-method surfs 'addtinsurface tincreationdata))
;; do whatever else is needed
(vlax-release-object tincreationdata)
(vlax-release-object surf)
(vlax-release-object surfs)
(vlax-release-object c3ddoc)
)
)
)
door Edward Winter

Graag Inloggen of een account aanmaken deelnemen aan het gesprek.

Moderators: Pascal Wesolek