CADsite forum

AutoCAD => Dot Net API => Topic gestart door: EddyBeerke op ma 13 05 2013, 10:28:17

Titel: Functie Bibliotheek VB.net (opgelost)
Bericht door: EddyBeerke op ma 13 05 2013, 10:28:17
Iemand een goed startpunt voor mij om een "Functie Bibliotheek" te maken wat ik kan gebruiken in verschillende projecten.
Ik wil dus functies maken zoals:
- GetEnt()
- GetSSet()
- GetPoint()
- ChangeText
- enz.

Ik nu verschillende app's gemaakt, en kan deze uitvoeren in Acad, maar ik merk dat ik vaak een functie van het ene project copieer en in de andere plak.

Maar hoe maak ik een bibliotheek maken van deze functies, hoe begin ik?
En wat ook heel belangrijk is, is hoe deze dan weer aanroepen.
Ik ben bekend met VB.net, maar als je een C#.net voorbeeld hebt mag dat ook.
Als ik deze link dan gebruik voor het vertalen naar VB.net kom ik daar wel uit, maar het is dan wel handig om de bron te zien:
http://www.developerfusion.com/tools/convert/csharp-to-vb/
Titel: Re: Functie Bibliotheek VB.net
Bericht door: winnes op ma 13 05 2013, 12:34:03
Ik zou al je functies in eenzelfde assembly (DLL) zetten, die je ergens centraal plaatst (vast lokaal path, netwerk?)

Deze assembly kan je vervolgens automatisch inladen in AutoCAD via:
- Registry aanpassing
- Netload aanroep in acad.lsp (nog andere lsp opstartbestanden ter beschikking)

Op die manier heb je één bron van waarheid, die je beschikbaar hebt in alle tekeningen die je maar opent.

Als tip zou ik je tevens nog meegeven dat je eenvoudig VB.NET en C# kan mixen in dezelfde Visual Studio solution, 2 projecten (eentje voor elk)
Titel: Re: Functie Bibliotheek VB.net
Bericht door: EddyBeerke op ma 13 05 2013, 13:06:30
Citaat van: winnes op ma 13 05 2013, 12:34:03
Ik zou al je functies in eenzelfde assembly (DLL) zetten, die je ergens centraal plaatst (vast lokaal path, netwerk?)

Deze assembly kan je vervolgens automatisch inladen in AutoCAD via:
- Registry aanpassing
- Netload aanroep in acad.lsp (nog andere lsp opstartbestanden ter beschikking)

Op die manier heb je één bron van waarheid, die je beschikbaar hebt in alle tekeningen die je maar opent...
Bedankt voor je antwoord.

Ik begrijp wat je bedoeld maar ik wil de functies die ik heb gemaakt (dus niet de acad commando's) in een dll zetten en die aanroepen in een ander "vb.net project".
Eigenlijk net zoals je dat doet met de AcMgd.dll, AcCoreMdg.dll en AcDbMgd.ldd
Daar zitten dus functies in die je gebruikt bij het programmeren.
Ik wil dus net z'n library maken en gebruiken in mijn projecten.

Na wat knutselen ben ik er dus nu net achter hoe dat ik z'n bibliotheek maak en gebruik, maar ik wil niet dat anderen daar gebruik van kunnen maken ->> dus "Copy Local" op "False". Maar dit werkt dus niet.
Hierdoor moet ik mijn functies dus als copy mee geven en dat wil ik dus niet.
Is daar een oplossing voor?
Titel: Re: Functie Bibliotheek VB.net
Bericht door: winnes op ma 13 05 2013, 13:17:31
Je gaat die bibliotheek DLL toch altijd ergens moeten ter beschikking stellen
Je maakt dus een reference naar die DLL in Visual Studio ...

Wil je niet dat "anderen" die gebruiken, dan kan je je functies als private of protected definiëren, misschien?
Je hebt natuurlijk altijd nog public methods nodig om iets te kunnen aanroepen in je ander "vb.net project"

Misschien begrijp ik niet goed je perceptie van "ik wil niet dat anderen daar gebruik van kunnen maken"?
Titel: Re: Functie Bibliotheek VB.net
Bericht door: EddyBeerke op ma 13 05 2013, 17:03:32
Als ik nu een app maak dan geef ik alleen die dll-file.
Als ik nu met mijn functies.dll de functies gebruik die daar inzitten, dan moet ik twee bestanden geven.
Hoe doen ze dat dan bij Autodesk (met de AcMgd.dll, AcCoreMdg.dll en AcDbMgd.dll)?
Deze heeft toch niet iedereen op z'n pc staan?

Anders is het misschien toch handiger om de code te knippen en plakken.

Titel: Re: Functie Bibliotheek VB.net
Bericht door: winnes op ma 13 05 2013, 20:41:09
Je hebt in je Visual Studio project/solution een referentie nodig naar de acad dlls, maar kijk eens lokaal waar je AutoCAD geinstalleerd is... bijvoorbeeld: C:\Program Files\Autodesk\AutoCAD 2012 - English.
Daar staan deze dlls ook.

Het is dus best mogelijk dat je voor een (software) architectuur kiest, waar je uiteindelijke maatsoftware bestaat uit verschillende dlls, eventuele config files, eventueel een aanpassing in registry of acad.lsp enzovoorts...

Je kan trouwens met Visual Studio een setup & deployment project toevoegen aan je solution, waar je het nodige aanvinkt om tot een uitgerwerkt installatieprogramma te komen.
Uiteraard kan je dit met andere software of met elke soort scripting.
Titel: Re: Functie Bibliotheek VB.net
Bericht door: EddyBeerke op di 14 05 2013, 08:03:07
Oké, ik begrijp het.
Ik zal dus toch de functie.dll mee moeten geven of kopiëren en plakken.
Ik gebruik de referenties uit: C:\ObjectARX 2013\inc\
Vandaar dat ik dat dacht, ik heb dus niet verder gekeken.

Citaat van: winnes op ma 13 05 2013, 20:41:09
Je kan trouwens met Visual Studio een setup & deployment project toevoegen aan je solution, waar je het nodige aanvinkt om tot een uitgerwerkt installatieprogramma te komen.
Uiteraard kan je dit met andere software of met elke soort scripting.
Nu gebruik ik "Visual Basic 2010 Express" kan dat daar ook mee?
Bij een zelfstandig programma (.exe) wat ik gemaakt heb lukte dat ook niet goed. Misschiem verkeerde instellingen gedaan.
Hoe doe je dat dan, want dan zou ik een installatie bestand willen maken waarbij dan beide bestanden in kunnen staan?
Titel: Re: Functie Bibliotheek VB.net
Bericht door: winnes op di 14 05 2013, 09:36:48

Visual Studio Express heeft inderdaad bij mijn weten geen Setup & Deployment Project Type.
Wat wel ter beschikking is in deze editie is de "ClickOnce Deployment".

Als je wat batch scripting kent kan je ook voor eenvoudige copy opdrachten en dergelijke wel iets proper in elkaar steken.

Anders moet je misschien je heil zoeken bij InstallShield en andere; bijvoorbeeld InnoSetup (http://www.jrsoftware.org/) is zelfs een gratis alternatief.
Titel: Re: Functie Bibliotheek VB.net
Bericht door: EddyBeerke op di 14 05 2013, 11:18:13
Citaat van: winnes op di 14 05 2013, 09:36:48
Anders moet je misschien je heil zoeken bij InstallShield en andere; bijvoorbeeld InnoSetup (http://www.jrsoftware.org/) is zelfs een gratis alternatief.

Hier was ik naar opzoek! Heel erg bedankt.  :vreegoe: