Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
ULBS INFORMATICA

Index preturi

Boxa membrana tweeter infundata

Am nevoie de poze cu un curcubeu
 Whisky for Mac

Xiaomi 14 Gpay

Izolare zid exterior de scandura

Dezinstalare drivere W11 23H3
 Recomandare masina de spalat fiab...

BSOD din cauza Intel Audio DSP dr...

De ce sunt oamenii nostalgici

Cum vand casa fara factura Hidroe...
 Scor FICO minim

Tonometru compensat CAS?

polita RCA ONLINE

Termostat frigider - verificare
 

Eroare VBA in Autocad

- - - - -
  • Please log in to reply
12 replies to this topic

#1
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,819
  • Înscris: 01.11.2005
Salut,
Lucrez la un mic proiect in AutoCAD in VBA. Scopul proiectului este acela de a recunoaste blocurile cu atribute si sa imi creeze un tabel cu blocurile gasite si atributele fiecarui bloc.
Toate bune si frumoase pana am ajuns la o infundatura...pur si simplu nu reusesc sa imi dau seama ce se intampla...problema fiind urmatoarea:
Daca in desen am doar blocuri cu atribute...totul este ok. Daca in desen apare un tabel, la fel este ok...nici o problema...daca in desen apar mai mult de 2 tabele...atunci apare o eroare. Nu reusesc sa imi dau seama de ce atunci cand am doar o entitate de tip tabel nu am eroare si daca am mai multe entitati de tip tabel imi da eroare.
Logica este urmatoare: Am 2 variabile: una de tip entitate si una de tip block  ( blocurile nu merg asociate spatiului de lucru ...doar entitatile )...pentru fiecare entitate este asociata cate un bloc....apoi o variabila de tip array memoreaza atributele fiecarui bloc...si apoi le listeaza...etc.

Mai jos pus codul cu secventa de recunoastere a blocurilor. Unele variabile nu apar deoarece am mai multe Form-uri si le-am declarant globale.
Am atasat si un print-screen cu eroarea...poate cineva imi da o idee.

Private Sub List()
Dim objEnt As AcadEntity 'definirea unei entitati oarecare...block-ul este considerat ca o entitate definita
Dim objRef As Ac*****Reference 'definirea unui obiect care sa contina atributele unei entitati.
intIndex = 0
Set objEnt = Nothing
For Each objEnt In ThisDrawing.ModelSpace 'pentru fiecare entitate din desen se vor executa comenzile de mai jos:
Set objRef = Nothing
'in cazul unei erori sare la jump....Acelasi lucru si cu On Error Resume Next
On Error GoTo Jump

Set objRef = objEnt 'obtinerea atributelor din continutul unei entitati sub forma unui obiect

varAttribs = Empty
strBlockObID = Empty
varAttribs = objRef.GetAttributes 'extragerea atributelor sub forma matriceala
strBlockObID = varAttribs(0).TagString 'setarea pentru al 6-lea index din lista de tab-uri a atributelor

If strBlockObID = "SFI" Then 'verificarea celui de-al 6-lea tab din atribut sa fie SFI, astfel se stie ca va fi blocul corect.
	
	 '*** alocarea fiecarui string cu textul fiecarui tag in parte
	 strSFI = varAttribs(0).TextString
	 strPCS = varAttribs(1).TextString
	 strDES = varAttribs(2).TextString
	 strTYP = varAttribs(3).TextString
	 strCAP = varAttribs(4).TextString
	 strSUP = varAttribs(5).TextString
		
	 '*** verificarea lungimi textului fiecarui string
	 strDESCRlen = Len(strDES)
	 strTYPElen = Len(strTYP)
	 strCAPlen = Len(strCAP)
	 strSUPPlen = Len(strSUP)
	
	 If strDESCRlen > 32 Then
		 strMsg = strSFI & " - DESCRIPTION too long. Maxiumum 32 characters allowed. Please update"
		 Call messages
	 End If
	
	 If strTYPElen > 16 Then
		 strMsg = strSFI & " - TYPE too long. Maxiumum 16 characters allowed. Please update"
		 Call messages
	 End If
	
	 If strCAPlen > 27 Then
		 strMsg = strSFI & " - CAPACITY too long. Maxiumum 27 characters allowed. Please update"
		 Call messages
	 End If
	
	 If strSUPPlen > 20 Then
		 strMsg = strSFI & " - SUPPLIER too long. Maxiumum 20 characters allowed. Please update"
		 Call messages
	 End If
	
	 '*** Adaugarea atributelor in lista. Lista are 6 coloane, in fiecare coloana fiind trecuta cate o grupa de atribute
	 List_name.ColumnCount = 6
	 List_name.ColumnWidths = "60,30,170,90,145,100"
	 List_name.AddItem
	 List_name.List(intIndex, 0) = strSFI
	 List_name.List(intIndex, 1) = strPCS
	 List_name.List(intIndex, 2) = strDES
	 List_name.List(intIndex, 3) = strTYP
	 List_name.List(intIndex, 4) = strCAP
	 List_name.List(intIndex, 5) = strSUP
	 intIndex = intIndex + 1
	
	
	 End If
'in cazul unei erori sare la Jump:
Jump:
Next


Attached Files


Edited by tehnics, 08 January 2013 - 23:39.


#2
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,025
  • Înscris: 24.02.2006
cred ca aici e problema:
Dim objEnt As AcadEntity
.....................
Dim objRef As Ac*****Reference
.....................
Set objRef = objEnt

ceel 2 tipuri de date nu sunt "compatibile"

#3
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,819
  • Înscris: 01.11.2005
Pai din ce am citit si eu tutoriale pe net logica este ca daca folosesc doar objRef ....asta se va referi doar la block-ul in sine care are acelasi nume...dar eu in desen am mai multe blocuri cu acelasi nume, doar ca atributele din block difera. objEnt face referire la toate entitatile existente...asta inseamna ca imi ia toate blocurile indiferent ca sunt 10 blocuri cu acelasi nume. Astfel eu cu objEnt caut printre entitati ( linii, texte, blocuri, tabele ...etc ) si apoi objRef ( care este de tip BlockReference ) incearca sa "imbrace haina" lui objEnt...bineintels daca objEnt este o linie...va da eroare...atunci comanda
On Error goto Jump
, va sari la urmatoarea entitate...pana cand va gasi un bloc, va extrage atributele...etc.
Problema apare cand objEnt este un tabel...daca gaseste un tabel...bineitneles ca objRef va da o eroare si va sari la linia Jump: ....e ok pana aici...dar nu inteleg de ce cand imi gaseste al doilea tabel se blocheaza, pentru ca inainte ca objRef sa ia valorile lui ObjEnt...eu am setat
Set objRef = Nothing
...adica objRef sa nu mai aiba nimic in continut...
Asta e marea dilema...de ce la primul tabel nu da eroare....la al doilea tabel da eroare.

Later Edit:
Am incercat codul pe laptopul de la munca ( ce am exemplificat mai sus este pe laptopul de acasa ) ....si merge fara probleme...fara eroare si totul e ok.
Deci clar e de undeva din Acad...si nu din cod. Ma gandesc ca ar putea fi de la windows...acasa am W8, la munca am W7 ambele 64biti.. Ambele sunt Dell Precision si pe ambele am Acad 2012....clar e de la VBA sau Acad.

Se poate inchide.

Edited by tehnics, 09 January 2013 - 10:43.


#4
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,819
  • Înscris: 01.11.2005
Salut,
In cadrul aceluiasi proiect revin cu o alta problema destul de...ciudata. Am un buton care trebuie sa imi insereze text cu formatare si o poza intr-un fisier Excel. Cand rulez pentru prima data totul merge f bine ( creaza un fiser excel, scrie ce are de scris in acel fisier, il salveaza, il inchide si inchide si aplicatia excel din task manager )....daca mai vreau sa mai rulez inca o data,...codul ruleaza...dar nu imi scrie nimic in acel fisier, mi-l salveaza, inchide excelul...dar pur si simplu este gol. Daca inchid autocadul si deschid din nou si rulez...merge perfect...cum incerc sa il rulez a doua oara...nu mai vrea sa imi scrie nimic...pur si simplu fisierul este gol.
Am rulat codul pas cu pas ( Cu tasta F8 ) si cand scrie si cand nu scrie, vad ca celulele din interiorul fisierului excel ( am setat sa imi arate fisierul in timp ce il scrie ) se selecteaza ...deci ele sunt accesate de catre cod...doar ca la a doua rulare, chiar daca sunt accesate, nu imi scrie nici un continut.
Deci pentru a rula codul, trebuie sa opresc si sa pornesc Acad-ul din nou....mai bine spus am doar o singura rulare la o singura sesiune de autocad....indiferent de fisierul deschis..
Are cineva idee de ce oare se intampla lucrul asta ? M-am uitat si in procese...nu se incarca decat acad.exe si excel.exe, dupa terminare excel.exe se inchide singur.


Codul este urmatorul


Private Sub Create_Click()
If TextBox1.Text = "" Then
MsgBox "No location is set. Please set"
TextBox1.SetFocus
End If
If TextBox2.Text = "" Then
MsgBox "No file name is set. Please set"
TextBox2.SetFocus
End If

Location = TextBox1.Text
File = TextBox2.Text

Set oExcel = New EXCEL.Application
oExcel.Visible = True
Set oBook = oExcel.Workbooks.Add
Set oSheet = oExcel.Worksheets.Add
On Error Resume Next
With oSheet
.Range("A1:B3").Select
With Selection
	 .HorizontalAlignment = xlCenter
	 .VerticalAlignment = xlBottom
	 .WrapText = False
	 .Orientation = 0
	 .AddIndent = False
	 .IndentLevel = 0
	 .ShrinkToFit = False
	 .ReadingOrder = xlContext
	 .MergeCells = False
End With
Selection.Merge
.Range("D1:F1").Select
With Selection
	 .HorizontalAlignment = xlCenter
	 .VerticalAlignment = xlBottom
	 .WrapText = False
	 .Orientation = 0
	 .AddIndent = False
	 .IndentLevel = 0
	 .ShrinkToFit = False
	 .ReadingOrder = xlContext
	 .MergeCells = False
End With
Selection.Merge
.Range("D2:F2").Select
With Selection
	 .HorizontalAlignment = xlCenter
	 .VerticalAlignment = xlBottom
	 .WrapText = False
	 .Orientation = 0
	 .AddIndent = False
	 .IndentLevel = 0
	 .ShrinkToFit = False
	 .ReadingOrder = xlContext
	 .MergeCells = False
End With
Selection.Merge
.Range("G1").Select
ActiveCell.FormulaR1C1 = "SYSTEM IDENTIFICATION:"
.Range("G2").Select
ActiveCell.FormulaR1C1 = "SYSTEM REVISION:"
.Range("G3").Select
ActiveCell.FormulaR1C1 = "ARMATURE REV."
.Range("C1").Select
ActiveCell.FormulaR1C1 = "ARMATURE LIST"
.Range("C2").Select
ActiveCell.FormulaR1C1 = "PROJECT:"
.Range("C3").Select
Columns("C:C").EntireColumn.AutoFit
Columns("G:G").EntireColumn.AutoFit
'ActiveSheet.Pictures.Insert("C:\Users\Daniel\Disc Google\Proiect\logo.png"). _
	 Select
ActiveSheet.Pictures.Insert("C:\Users\Daniel\Desktop\G-Drive\Google Drive\Proiect\logo.png"). _
	 Select
Selection.ShapeRange.IncrementLeft -95.25
Selection.ShapeRange.IncrementTop -22.5
Columns("B:B").EntireColumn.AutoFit
Columns("B:B").ColumnWidth = 15.57
Selection.ShapeRange.IncrementLeft 6.75
Selection.ShapeRange.IncrementTop -3.75
Range("C4").Select
ActiveSheet.Shapes.Range(Array("Picture 1")).Select
'Selection.ShapeRange.ScaleHeight 0.8981804207, msoFalse, msoScaleFromTopLeft
Range("A4").Select
ActiveCell.FormulaR1C1 = "ITEM NO."
Range("B4").Select
ActiveCell.FormulaR1C1 = "DESCRIPTION"
Range("C4").Select
ActiveCell.FormulaR1C1 = "TYPE"
Range("D4").Select
ActiveCell.FormulaR1C1 = "SIZE"
Range("E4").Select
ActiveCell.FormulaR1C1 = "RATING"
Range("F4").Select
ActiveCell.FormulaR1C1 = "HOUSE MATERIAL"
Range("G4").Select
ActiveCell.FormulaR1C1 = "REMARKS"
Range("H4").Select
ActiveCell.FormulaR1C1 = "SIGN TEXTING"
Range("I4").Select
ActiveCell.FormulaR1C1 = "LETTER SIGN"
Range("G11").Select
End With
oBook.SaveAs (Location & File)
oBook.Close
oExcel.Quit
Set oSheet = Nothing
Set oBook = Nothing
Set oExcel = Nothing
MsgBox "File created succesfully"
End Sub


Edited by tehnics, 28 February 2013 - 19:22.


#5
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,423
  • Înscris: 10.08.2005
cum se manifesta daca schimbi locatia fisierului la cea de a doua rulare?

#6
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,819
  • Înscris: 01.11.2005

Quote

cum se manifesta daca schimbi locatia fisierului la cea de a doua rulare?
...se manifesta la fel.....DAR intre timp am tot incercat fel si fel de metode...pana am observat un anumit comportament:
Daca intru in visual editor si apas pe butonul acela patrat din dreapta lui pause (butonul se numeste Reset ) functioneaza corect de fiecare data, conditia sa intru in visual editor si sa apas Reset chiar daca rularea s-a terminat...
asa ca am apelat la un artificu si anume am scris asa:

Set oSheet = Nothing
Set oBook = Nothing
Set oExcel = Nothing
MsgBox "File created succesfully"
End
End Sub

...am adaugat comanda End dupa acel mesaj...nu prea imi convine pentru ca trebuie sa rulez programul de fiecare data...dar alta solutie viabila pana la momentul asta nu am gasit...

#7
nexusm

nexusm

    Senior Member

  • Grup: Senior Members
  • Posts: 2,793
  • Înscris: 07.07.2011
poate ca este nevoie de un Sleep sa ofere timpul necesar procesarii (CAD-ul fiind foarte stufos)
eventual acolo unde intuiesti ca sunt preocesari mai lungi baga un DoEvents dupa ele sa oferi un "respiro" procesorului.
si daca zici ca totusi acceseaza Cell-urile necesare dar nu scrie nimic in ele, aproape sigur pierzi valorile variabilelor pe drum(intre prima accesare si a doua.
ruleaza tot cu F8 si vezi daca mai ai valori stocate in variabile

Edited by nexusm, 28 February 2013 - 22:10.


#8
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,819
  • Înscris: 01.11.2005
@nexusm buna observatie. Am rulat cu F8 si dupa prima rulare in care totul a fost ok, am rulat si a doua oara.....ghici ce ? Butonul PLAY ( acel triunghi albastru ) inca era activ desi toate instructiunile se terminasera...de ce ? ...pentru ca eu in codul meu nu am nici un "End" si el nu stie cand sa termine programul chiar daca rutinele s-au teminat de rulat. Inchiderea de la butonul "x" al formului nu face decat altceva sa imi inchida form-ul dar nu incheie rutina..adica codul inca ramane deschis rularii...
Mda...cam asta e situatia...nu am ce face...trebuie sa bag acel End.
Problema cu partea hardware nu cred ca ar fi....la munca am un DELL Precision M4600 (  8gb ram si procesor de 2,4ghz parca ) iar acasa am un DELL Precision M4300 ( cu 4gb ram si 2,2 Ghz ) iar laptopurile astea chiar nu se impiedica de acad ...iar problemele astea le am chiar si intr-un desen blank...

Edited by tehnics, 28 February 2013 - 22:44.


#9
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,819
  • Înscris: 01.11.2005
...credeati ca am scapat de probleme ?....e pe naiba...
Asta din urma mi-a pus capac dar sa explic de ce e asa de ...tragic.
Dupa ce am lucrat la proiectul prezentat mai sus...toate bune si frumoase...l-am prezentat catorva colegi care au fost entuziasmati de program ...si la nivel de departament s-a decis sa il instalez pe 1-2 statii sa vedem cu ruleaza si daca e ok...il implementam la nivel de departament....ok...zis si facut: descarcat VBA module de pe site-ul celor de la Autodesk, instalat...rulat ok. Peste cateva zile, un coleg il cheama pe responsabilul cu mentenanta calculatoarelor si a serverelor sa ii spuna ca atunci cand salveaza un desen dureaza mult...cel de la IT...se uita cerceteaza...nimic interesant, apoi colegul ii mentioneaza de proiectul meu...ajung si eu la fata locului...ma uit cu ala de la IT...mie nu mi se parea nimic anormal ( salva un desen destul de complicat in 2-3 minute pe server ....asa salva si la mine..) i-am explicat lu ala de la IT: programul meu ruleaza doar cand e accesat...in rest nu face nimic...i-am demonstrat si a confirmat...in fine...l-am lasat sa isi vada de treaba si am plecat. Dupa vre-o juma de ora imi spune: Problema era de la programul tau ....l-am dezinstalat si acum merge ok calculatorul. Eu intreb: Ce program instalat ? Eu nu am instalat nici un program...e doar un script incarcat in Autocad. EL; Nu, eu am dezinstalat din Control Panel un program instalat de tine acum 2 zile in urma...ceva legat de VBA. Atunci mi-a picat fisa....si moralul mai mult. Apoi el ca sa imi dovedeasca imi spune: dezinstaleaza si tu VBA Module si vezi cum se misca. OK zic eu....am dezinstalat si intr-adevar avea dreptate...un desen care inainte mi-l salva in 2-3 minute acum il salva in 5 secunde. WTF...care era problema atunci ? Eu VBA module l-am instalat de cand am venit in firma...tot asa am avut in cap niste programe asemanatoare dar am renuntat la ele....si mereu calculatorul meu salva greu desenele...dar mi s-a parut normal....apoi dupa ce am vazut diferenta...mi-am dat seama ca acel modul VBA fusese problema...asa ca am inceput sa caut pe net si supriza:


VBA is no longer being developed. Microsoft has announced the “Discontinuation of the VBA Licensing Program” (see http://msdn.microsof...v/bb190538.aspx) on July 2007. One major effect of this decision is that there is not a 64 bit version of VBA. (The VBA engine in AutoCAD 64 bit is the standard 32 bit VBA engine. It is implemented as a 32-bit component external to the AutoCAD process).
Also, as of AutoCAD 2010, it is necessary to download an installer to enable VBA in AutoCAD. We expect that VBA will not be included as a component AutoCAD for many more releases, so now is the time to start thinking about migrating your VBA to VB.NET. The tools and ideas presented in this class will help you quickly get up to speed on this process.



Pe moment chiar nu am stiut ce sa zic....cei de la departament mi-au zis ca e ok...daca pot sa fac transferul de la VBA la VB.NET e ok...daca nu asta e. Faza e ca eu am fost platit pentru asta si nu vreau sa pic de fraier ( desi nimeni nu imi va cere nimic inapoi daca nu voi putea duce treaba pana la capat ).

Ceea ce eu nu inteleg: De ce puii mei cei de la Autodesk daca stiu de problema asta mai pun la dispozitie suport pentru 64 de biti ? Aici este pagina de unde am dat jos modulele.
Acum...ma apuc sa incerc usor usor sa vad cum fac trecerea asta de la VBA la VB.NET. Am vazut ceva tutoriale pe net...nu ar fi chiar asa mare branza dar oricum ceva cunostinte de programare mai avansate decat ale mele cred ca va fi nevoie...vom vedea. Sper pana miercuri sa termin ca este programata o sedinta in care eu trebuia sa explic oficial utilitatea si functionarea programului tuturor colegilor de departament...dar din moment ce s-a ivit problema asta...nu stiu ce voi mai prezenta...vom vedea.

Edited by tehnics, 08 March 2013 - 14:36.


#10
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,819
  • Înscris: 01.11.2005
Salutare din nou,
Dupa cele patite mai sus, usor, usor m-am apucat de facut programul in VB.NET. Ce pot spune...pentru mine care nu sunt programator destul de dificil, dar am gasit si chestii care mi-au usurat munca deci undeva balanta e la mijloc. Desi ieri mai aveam un pic si imi ieseam din minti deoarece nu gaseam solutie pentru a updata DOAR anumite atribute din blocuri clar specificate...se pare ca VB.NET nu recunoaste comanda
If 0<numar<9 Then
end if

...dar acum am ajuns la un mic impas si anume:
Am 2 form-uri, fiecare form avand cate un ListView. Din primul form selectez ce blocuri vreau sa editez si apoi mi se deschide formul 2 cu un  listview exact cu blocurile selectate ( asta pentru a putea face un fel de " global changes " ). Dupa ce schimb, apas butonul OK care are ca rezultat updatarea schimbarilor in losta din formul 2. Apoi la apasarea butonului Apply, are ca rezultat updatarea modificarilor in lista din Formul 1 si updatarea blocurilor in desen ( este pusa o poza cu asa ceva ).
Din ce m-am documentat eu pe internet, pentru a putea controla obiectele din Formul 1 direct din formul 2 ( in VBA era de exemplu: Form1.Textbox1.Text="") va trebui sa declar Formul 1 ca fiind Public. Asa am si facut, l-am declarat public intr-un modul si funtioneaza...adica cand modific in formul2 se modifica si in formul 1....doar ca apare o MARE problema: dupa ce termin toata treaba si inchid programelul...cand ii dau sa ruleze, imi da o eroare: System.ObjectDisposedException: Cannot access a disposed object.Object name: 'New_arm'. New_arm este formul declarat public.
Atunci am incercat alta smecherie...si anume nu l-am mai declarat public, ci l-am declarat ori de cate ori a fost nevoie pentru apelarea lui

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
	 'declararea formului New_arm
	 Dim frmNew_arm As New_arm = New New_arm
	 Me.Visible = False
	 nr_randuri_lista = frmNew_arm.lstName.Items.Count()
	 nr_randuri = lstModify.Items.Count
	 For Me.iteratie_x = 0 To nr_randuri - 1
		 For Me.iteratie_y = 0 To nr_randuri_lista - 1
			 If lstModify.Items(iteratie_x).SubItems(0).Text = frmNew_arm.lstName.Items(iteratie_y).SubItems(0).Text Then
				 frmNew_arm.lstName.Items(iteratie_y).SubItems(1).Text = lstModify.Items(iteratie_x).SubItems(1).Text
				 frmNew_arm.lstName.Items(iteratie_y).SubItems(2).Text = lstModify.Items(iteratie_x).SubItems(2).Text
				 frmNew_arm.lstName.Items(iteratie_y).SubItems(3).Text = lstModify.Items(iteratie_x).SubItems(3).Text
				 frmNew_arm.lstName.Items(iteratie_y).SubItems(4).Text = lstModify.Items(iteratie_x).SubItems(4).Text
				 frmNew_arm.lstName.Items(iteratie_y).SubItems(5).Text = lstModify.Items(iteratie_x).SubItems(5).Text
				 frmNew_arm.lstName.Items(iteratie_y).SubItems(6).Text = lstModify.Items(iteratie_x).SubItems(6).Text
				 frmNew_arm.lstName.Items(iteratie_y).SubItems(7).Text = lstModify.Items(iteratie_x).SubItems(7).Text
				 frmNew_arm.lstName.Items(iteratie_y).SubItems(8).Text = lstModify.Items(iteratie_x).SubItems(8).Text
			 End If
		 Next
	 Next

...in felul asta nu imi mai aparea odioasa eroare, doar ca atunci dupa ce modific atributele din Form-ul 2 , acestea nu se updateaza automat si in Form-ul 1 ci raman neschimbate, desi in desen ele se updateaza.

Cum naiba sa fac ? Daca declar Public, imi da eroare, daca il declar de fiecare data cand am nevoie, nu mi se updateaza lista din Form 1.

Ideile sunt binevenite.

Attached Files



#11
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,819
  • Înscris: 01.11.2005
Salutare din nou...de data asta cu vesti bune.
Dupa ore piedute, nervi consumati, intrebari fara raspuns si buguri multe...am reusit sa o scot la liman cu programul care mi l-am propus...bineinteles am lucrat doar cand aveam chef.,,dar cel putin a iesit un utilitar care isi face treaba asa cum trebuie...bineinteles mai trebuie update-uri la el dar pana acum e ok si vad ca lumea la mine la munca il foloseste si este foarte multumita ...deci sadisfactia mea este maxima. Am atasat ceva print-screen-uri cam cu ce poate programul...asa in mare. O sa fac si un filmulet...dar alta data.
In principiu: in autocad am o schema a unei instalatii navale cu toate armaturile in ea ( valvule, filtre, etc ) si fiecare armatura are un numar unic de identificare de exemplu V33003 iar in spatele acestei armaturi ( este de tip BLOCK ) mai exista si alte informatii ( ce tip este, ce dimensiune, ce material etc ) . La terminarea instalatiei noi trebuie sa facem acel BOM file ( Bill Of Material ) ...si ca sa stea cineva sa il faca dureaza ceva...asa ca programul meu creaza acest BOM automat cu tot cu formatarea pagini si tot ce vrei. Mai mult de atat, poti edita acele valori din lista direct din program pentru fiecare in parte ....sau pentru un grup de armaturi ( adica am 10 valvule cu acelasi dimensiune...selectez valvulele, apas butonul Change Selected, si trec dimensiunea ...si se schimba automat in desen si in lista pentru toate valvulele )...la fel, daca consideri ca o armatura nu trebuie sa apara in BOM, o poti elimina ( cel mai bine o elimini din desen ) . Apoi daca mai tarziu vine revizii la desen si trebuie sa adaugam, sa scoatem sau sa modificam armaturile ( de exemplu o valvula trebuei sa fie DN100 si nu DN80 ), programul meu incarca ultima revizie a fisierului BOM si o compara cu ce este in desen si apoi face comparatie...ce s-a adaugat, ce s-a inlaturat sau ce valori s-au schimbat si updateaza BOM cu noua revizie...si pentru fiecare in parte marcheaza cu galben exact ce s-a intamplat si scrie ADDED, CHANGED, REMOVED pentru a stii exact ce s-a intamplat. Bineinteles stie exact pentru ce proiect in parte unde sa creeze si de unde sa updatateze fisierele BOM. Sper ca din poze veti intelege mai multe.

Attached Files



#12
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,819
  • Înscris: 01.11.2005
....update...
Dupa toate cele scrise mai sus, au aparut si rezultatele: vezi pagina 4 din atasament.

Edited by tehnics, 01 October 2013 - 08:01.


#13
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,819
  • Înscris: 01.11.2005
Astazi am updatat si ultima versiune a programului, ajunsa la versiunea v1.5 dupa multe challange-uri.

Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate