» »

[c#] Form in .DLL

[c#] Form in .DLL

japol ::

Kako zvežem dll s formom?

Imam razdalja.DLL, ki vsebuje ukaz Distance za program AutoCAD. In to izmerjeno razdaljo bi rad da mi jo vnese v textBox1. Form1 imam že postavljen, s klikom na npr. Button1 zaženem AutoCAD, z Button2 se v ukazno vrstico vpiše netload in odpre razdalja.DLL, s klikom na Button3 se uklopi ukaz distance v AutoCADu, sedaj pa kako izmerjeno dolžino vpiše v textBox1 Forma1?

AndrejS ::

Daš referenco na DLL in potem pogledaš katere funkcije ti nudi

japol ::

A mi daš lahk kak primer kode?

japol ::

ime dllja je: "Delo z ACAD ClassLibrary4 Form", ki sem ga dodal k referencam. Potem sem vpisal: using Delo_z_ACAD_ClassLibrary4_Form; da uporabim knjižnico. V tem dllju je Class1, ki ima metodo izvedi4, ki izmerjeno dolžino prestavi v textbox. Kako to uporabim v Button1_Click?

japol ::

Ustvaril sem novi progjekt ClassLibrary, z imenom: Delo z ACAD ClassLibrary4 Form.dll, dodal sem acdbmgd.dll in acmgd.dll in ju z using uporabil, dodal sem Class1 in vpisal metodo izvedi4. Metoda izvedi4 ima kodo:
Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
PromptDoubleResult pDblRes;
pDblRes = acDoc.Editor.GetDistance("\nPick two points: ");
Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog("\nDistance between points: " + pDblRes.Value.ToString());

Form1 main = new Form1();
TextBox currentTextbox1 = ((main.Controls.Find("textBox1", true).FirstOrDefault()) as TextBox);
currentTextbox1.Text = pDblRes.Value.ToString();

Dodal sem še Item: Windows Form, na katerem sta button1 in textbox1.
Pod Options sem v zavihku Debug izbral Start external program in izbral program.

Ko zaženem, se vklopi autocad, z netload odprem Delo z ACAD ClassLibrary4 Form.dll in ko na form kliknem button1, me vpraša da naj izbrem dve točki, med katerima izmeri razdaljo, ko to storim, prikaže izmerejno vrednost v textbox1.

Se pravi ta način je da naprej ustvarim classlibrary, nato dodam item windows form, za debug izberem external program. Ta način dela.

Sedaj pa sem poizkusil naslednje: ustvaril sem novi projekt, izbral classlibrary z imenom mojacad.dll in vanj vpisal enako kodo, kot zgoraj. Nisem dodajal windowsforme ali kaj drugega.
Ločeno ustvarim novi windowsform projekt, v katerega pod add reference, dodam mojacad.dll, zaženem, a mi javi error:
The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Po tem načinu pa ne dela. Kaj bi lahko bilo narobe?

darkolord ::

Verjetno v output mapi tvojega projekta nimaš acdbmgd.dll in acmgd.dll (oz. enega od dlljev, ki ga "mojacad.dll" potrebuje)

japol ::

Pod lastnosti je za dodane references pod Copy Local izbrano True in mi skopira vse plus še nekaj dodatnih dll, s katerimi sta očitno povezana acdbmgd.dll in acmgd.dll v mapo kjer imam projekt. Sem našel problem, ampak je potem s tem nastal tudi novi. Pod debug sem moral spremeniti v x86, ker gre za 32 bitni dll. Čeprav sta acdbmgd.dll in acmgd.dll pobrana iz autocada, ki je 64 bit. Trenutno sem še mal zmeden glede tega, tko da vsaka pomoč je dobrodošla.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Visual Basic

Oddelek: Programiranje
313235 (2261) cekr
»

C# povezava forma in classa

Oddelek: Programiranje
172173 (1636) Miko55
»

C# iz form2 v form1,textboxi

Oddelek: Programiranje
131874 (1500) Keki
»

c# class

Oddelek: Programiranje
342178 (1772) japol
»

VB.net

Oddelek: Programiranje
71119 (986) darkolord

Več podobnih tem