[ zgas @ 26.10.2006. 11:01 ] @
Da li je moguce u Corelu dobiti obim naprimer nacrtanog pravilnog ili nepravilnog objekta? Da ne bih koristio CAD za ovo interesuje me da li Corel to moze. Potrebno mi je da izracunam obim svih nacrtanih objekata na jednoj stranici, oni su uglavnom zatvorenog obima i pravih linija. Ne znam da li je to moguce i kako?
[ Miqel @ 26.10.2006. 21:22 ] @
Ne moze
Ali ima jednostavniji nacin.
Pomnozi Fi ( precnik kruga sa 3.14) i to je to.
Pozdrav
[ zgas @ 28.10.2006. 06:41 ] @
Nije u pitanju krug, nego razliciti oblici i pravilini i nepravilni. Mozda postoji neki plug in, ili tako nesto?
[ goranvuc @ 31.10.2006. 09:26 ] @
Mogu ti napraviti VB Script koji ce ti dati informaciju o obimu za izabrani objekat, ali objekat mora biti pretvoren u krive.
[ zgas @ 01.11.2006. 08:27 ] @
Hvala mnogo! Kako da dodjem do skripta?
[ goranvuc @ 01.11.2006. 09:44 ] @
U prilogu su ti fajlovi koji su neophodni.

Kako postaviti celu stvar?

Neohodni uslovi:
1. Instalirana VBA podrska za Corel (jedna od komponenti instalacije)
2. Verzija Corel-a koja podrzava VBA

Redosled:
1. Raspakovati fajlove koje sam ti prilozio u neki folder u kom ces inace drzati datoteke ovog tipa
2. Otvoriti nov Corel dokument
3. Ici na Tools -> Visual Basic -> VB Editor
4. Dodati ova dva fajla projektu GlobalMacros sa File -> Import File (dodajemo ga ovom projektu da bi mogao da racunas obim u bilo kom dokumentu)
5. Sacuvati projekt GlobalMacros.gms

Koriscenje:
Za bilo koji dokument koji se otvori, kada je potrebno racunanje obima ide se na Tools -> Visual Basic -> Play i izabere se Macros in: GlobalMacros, a onda se izabere makro Funkcije.Obim i pokrene Run

Ako je potrebno racunanje u nekoj drugoj jedinici (cm, mm) onda se ide na VB Editor i u projektu od tekuceg dokumenta VBA Projekt se podesi Unit za ThisDocument.

Napomena:
Razvoj je izvrsen na Corel Draw 9.0
[ Shadowed @ 05.11.2006. 13:00 ] @
Citat:
goranvuc: Razvoj je izvrsen na Corel Draw 9.0

I nece raditi u 3x a mislim ni 11 ni 12 jer objekat ThisDocument nije vise podrzan. Sada je umesto njega ActiveDocument. Sve ostalo (sto se ovog slucaja tice) je manje/vise isto.
[ goranvuc @ 05.11.2006. 16:36 ] @
Pa u kodu i ne spominjem (referenciram) ThisDocument, vec samo opisujem kako intervenisati u slucaju da je potrebna druga jedinica mere. Hvala na sugestiji u svakom slucaju.

P.S. @Shadowed, da li si probao?
[ Shadowed @ 05.11.2006. 18:30 ] @
Jesam, i usput napravio obuhvatniju f-ju malo jer sam ja vec duze vreme hteo to da napravim ali nisam znao da je podrzano u samom corel-u. Bas sam pre neki dan trazio formule za bezierove krive po wikipediji...
[ goranvuc @ 05.11.2006. 18:34 ] @
Imam ja obuhvatnije funkcije posto radim profesionalnu automatizaciju poslova u Corel Draw za stamparije, ali ovde sam dao samo resenje za ono sto je covek pitao. Uvek reagujem kada neko izjavi nesto tipa: "U Corel-u ne moze da se uradi to i to.." Mislim da uz kombinaciju Visual Basic Active X komponenti i VBA u okviru Corel Draw moze da se uradi sta god coveku padne na pamet.

Mnogima sam ustedeo sate i dane koje bi potrosili na besmisleno ponavljanje odredjenih radnji.

Pozdrav, drago mi je da se jos neko zanima za ovu problematiku.
[ Shadowed @ 05.11.2006. 19:25 ] @
VB programer koji je radio u Corel-u... Kako se ne bih zanimao :).

Jedino nisam gledao kako se prave plugin-ovi. Tj. nema dokumentacije o tome uz Corel a nisam ni na njihovom sajtu nasao (doduse, nisam pretrano studiozno ni trazio :)).
Pretpostavljam da se pravi neka COM klasa koja treba da implementira neke interfejse... (?)
[ goranvuc @ 05.11.2006. 19:47 ] @
Nema potrebe za izradom takvih plugin-ova. Ja sve postizem tako sto pravim ActiveX dll koji radi odredjene poslove u Corelu (funkcije koje rade sa referenciranom CorelDraw aplikacijom, npr. napravio sam ActiveX komponentu koja pravi EAN barkod u Corel-u bolje nego Corelov Barcode Wizard, moze da se automatizuje, za ispis brojeva koristi bilo koji font po izboru, sve je u krivama i CMYK-u, potpuno je u skladu sa najaktuelnijom GS1 specifikacijom...) a onda takve komponente samo referenciram i koristim u globalnim makroima koje prilagodjavam korisnicima.

Pokazalo se da je to optimalan nacin razvoja i upotrebe, jer se korisnici rasterete kompleksnosti izrade i instalacije, stiti se izvorni kod od zloupotrebe ...
[ Shadowed @ 05.11.2006. 19:55 ] @
U svakom slucaju, moja radoznalost ipak prevazilazi prakticnost, moracu ipak da prostudiram to kad budem imao vremena :)
[ goranvuc @ 05.11.2006. 19:58 ] @
Javi ako otkrijes nesto "pametno", ipak nas ima vrlo malo koji se bave ovom kombinacijom alata u primeni, ne samo kod nas vec i u svetu (postoji vrlo malo resursa na internetu vezanih za makroe u corelu, a jos manje firmi koje to profesionalno rade).

Pozdrav!

P.S. Sad sam se nesto setio, da li mislis na plug-inove u corel-u koji rade sa bitmapiranim objektima? (Add-Ins iz Bitmaps menija). Koliko znam oni se prave na isti nacin i kompatibilni su sa Photoshop plug-inovima. Na zalost, nisam imao vremena da se i sa tim bavim, specijalnost mi je VB i VBA pa sam to znanje koristio svuda gde je moglo da se upotrebi, a ovo se radi na drugi nacin.

[Ovu poruku je menjao goranvuc dana 05.11.2006. u 21:16 GMT+1]
[ Wega @ 05.11.2006. 20:36 ] @
oko izvadih ali milimetre nisam nabudzio :)

[ goranvuc @ 05.11.2006. 20:39 ] @
Saljem ti za 15 minuta izmenjen projekat sa mogunoscu podesavanja jedinice mere na samom ekranu.

Evo ga:
[ Shadowed @ 05.11.2006. 21:09 ] @
Daje duzinu u jedinicama koje se koriste u datom dokumentu (tj. u jedinicama horizontalnog lenjira):

Code:
Public Sub CurveLenght()
    If ActiveDocument.Selection.Shapes.Count = 0 Then
        MsgBox ("Select shape first.")
        Exit Sub
    Else
        If ActiveDocument.Selection.Shapes(1).Type <> cdrCurveShape Then
            MsgBox ("Shape must be a curve.")
            Exit Sub
        Else
           MsgBox (ConvertUnits(ActiveDocument.Selection.Shapes(1).Curve.Length, ActiveDocument.unit, ActiveDocument.Rulers.HUnits) & GetUnitName(ActiveDocument.Rulers.HUnits))
        End If
    End If
End Sub

Private Function GetUnitName(unit As cdrUnit) As String
    Select Case unit
        Case cdrAgate: GetUnitName = "Agate"
        Case cdrCentimeter: GetUnitName = "cm"
        Case cdrCicero: GetUnitName = "Cicero"
        Case cdrDidots: GetUnitName = "Didots"
        Case cdrFoot: GetUnitName = "Foot"
        Case cdrInch: GetUnitName = "Inch"
        Case cdrKilometer: GetUnitName = "km"
        Case cdrMeter: GetUnitName = "m"
        Case cdrMile: GetUnitName = "Mile"
        Case cdrMillimeter: GetUnitName = "mm"
        Case cdrPica: GetUnitName = "Pica"
        Case cdrPixel: GetUnitName = "Pixel"
        Case cdrPoint: GetUnitName = "pt"
        Case cdrTenthMicron: GetUnitName = "TenthMicron"
        Case cdrUnitH: GetUnitName = "UnithH"
        Case cdrUnitQ: GetUnitName = "UnitQ"
        Case cdrYard: GetUnitName = "Yard"
    End Select
End Function
[ goranvuc @ 05.11.2006. 21:10 ] @
Kasnis ;)

Mislim da je moje resenje elegantnije - bez uvrede. Inace, da li si to negde nasao na Net-u ili je iz sopstvene radionice?

I jos nesto: u starijim verzijama nije podrzan "ActiveDocument.Rulers.HUnits" kao ni "ConvertUnits"
[ Wega @ 07.11.2006. 22:41 ] @
@goran

Svaka cast. hvala puno. ovo mi je puno pomoglo.

inace, ovo moze da posluzi i za merenje duzine linija. sad konacno imam sve sto mi treba u corelu.

da mogu samo da ti docaram koliko mi ovo skracuje rad.

hvala jos jednom
[ Shadowed @ 07.11.2006. 23:31 ] @
Nisam tad stigao da pogledam tvoj kod a posle sam zaboravio temu :) (dnevno procitam par stotina poruka na nekoliko desetina tema..).
Ja sam napisao taj kod cisto za sebe u X3. Ono sto mi je zapravo bilo bitno a sto sam video iz tvog prvog koda je Curve.Length. Ostalo je rutina :).
[ goranvuc @ 08.11.2006. 07:05 ] @
Citat:
Shadowed: Nisam tad stigao da pogledam tvoj kod a posle sam zaboravio temu :) (dnevno procitam par stotina poruka na nekoliko desetina tema..).

Znam, kad god dodjem, a ti u listi aktivnih korisnika ;)
Citat:
Shadowed:
Ja sam napisao taj kod cisto za sebe u X3.

Nisam ni sumnjao, samo sam pitao za svaki slucaj da ne znas neki dobar resource na netu za VBA u Corel-u, posto je ono sto sam ja dosada nalazio vrlo siromasno i basic nivo.


[Ovu poruku je menjao goranvuc dana 08.11.2006. u 13:06 GMT+1]