Namo braižymas per tęsinius (AutoLisp programa)

Visi klausimai, pastebėjimai, susiję su programine įranga GeoMap.

Namo braižymas per tęsinius (AutoLisp programa)

geocad » 29 Geg 2009, 13:15

Sveiki.
Norėjau parodyti, kaip galima pritaikyti AutoCAD savo reikmėms naudojant paties sukurtas programas AutoLISP kalba.
Neseniai teko matuoti toponuotrauką M 1:5000, namus koordinuodavome taip: paimdavome 5 taškus namo sienų tęsiniuose, tada pastatą išbraižydavome stačiais kampais.
Kai pamačiau, kad rankiniu būdu teks braižyti apie 500 pastatų, susimąsčiau, kaip čia išvengus to rankinio braižymo ir paspartinus visą procesą.

Pažiūrėję į pridėtą paveikslėlį matysite, kad namo braižymas susideda iš šių veiksmų:
1. Sujungiam linija taškus 1 ir 4.
2. Atmetam liniją per tašką 5.
3. Iškeliam statmenis nuo taškų 2 ir 3 į liniją, atmestą per tašką 5.
4. Nukarpom nereikalingus linijų galus.
5. Apjungiam gautas linijas į vieną.

Panaudoję žemiau pateiktą programą, vieno namo braižymui sutaupome 35-40sek. + ranka nepavargsta. :)
Nukopijuokite žemiau pateiktą kodą į paprastą "Notepad" sukurtą failą ir išsaugokite jį naudodami prievardį ".lsp" (tai nurodo, kad faile yra AutoLISP kalba parašyta programa).
Atidarę bet kurį AutoCAD brėžinį "įmeskite" išsaugotą failuką pele - vilkite iš "My Computer" lango ir paleiskite brėžinyje ("drag and drop"). Tokiu būdu programa įkraunama į brėžinį.

Prieš paleisdami programą sužymėkite piketus ekrane tokia tvarka:
1. Pirma pažymėkite pagrindinės linijos du taškus (paveikslėlyje Nr. 1 ir Nr. 4)
2. Pažymėkite tašką, per kurį reikia "atmesti" pagrindinę liniją (paveikslėlyje Nr. 5)
3. Pažymėkite taškus, nuo kurių reikia kelti statmenis (paveikslėlyje Nr. 2 ir Nr. 3)

AutoCAD'e duokite komandą "GCNAMAS". Viskas, programa išbraižys uždarą namo kontūrą.
Kad nereikėtų patiems kurti failiuko, prisegu jo kopiją - "pavyzdys_namai_5000.zip" - failas archyvo viduje.
:)

Kodas: Pasirinkti visus
(defun C:GCNAMAS ()
  ;; funkcija braižo namą, kai koordinuoti jo tęsiniai
  (setq ssAktRink (cadr (ssgetfirst)))
  (command "SELECT" "Remove" "All" "")

  (if ssAktRink
    (if   (/= (sslength ssAktRink) 5)
      (princ "\nTuri būti pasirinkti 5 piketai.")
      (progn
   (setq entPik1   (ssname ssAktRink 0)
         entPik2   (ssname ssAktRink 1)
         entPik3   (ssname ssAktRink 2)
         entPik4   (ssname ssAktRink 3)
         entPik5   (ssname ssAktRink 4)
         lstTsk1   (cdr (assoc 10 (entget entPik1)))
         lstTsk2   (cdr (assoc 10 (entget entPik2)))
         lstTsk3   (cdr (assoc 10 (entget entPik3)))
         lstTsk4   (cdr (assoc 10 (entget entPik4)))
         lstTsk5   (cdr (assoc 10 (entget entPik5)))

         Kamp1   (angle lstTsk1 lstTsk2)
         Kamp2   (+ Kamp1 (/ pi 2.0))

         lstTsk3_2   (polar lstTsk3 Kamp1 100.0)
         lstTsk4_2   (polar lstTsk4 Kamp2 100.0)
         lstTsk5_2   (polar lstTsk5 Kamp2 100.0)

         lstSus1   (inters lstTsk1 lstTsk2 lstTsk4 lstTsk4_2 nil)
         lstSus2   (inters lstTsk1 lstTsk2 lstTsk5 lstTsk5_2 nil)
         lstSus3   (inters lstTsk3 lstTsk3_2 lstTsk5 lstTsk5_2 nil)
         lstSus4   (inters lstTsk3 lstTsk3_2 lstTsk4 lstTsk4_2 nil)
   )


   (command "UNDO" "Begin")
   (setq iOsnap (getvar "OSMODE"))
   (setvar "OSMODE" 0)
   (command "PLINE" lstSus1 lstSus2 lstSus3 lstSus4 "c")
   (setvar "OSMODE" iOsnap)
   (command "UNDO" "End")

      )
    )
    (princ "\nTuri būti pasirinkti 5 piketai.")
  )
  (princ)
)
Prikabinti failai
pavyzdys_namai_5000.zip
(746 Baitų) Atsisiųsta 641 kartus(ų)
namas-tesiniuose.JPG
Programa namui per tęsinius braižyti (archyvą reikia išpakuoti).
namas-tesiniuose.JPG (3.58 KiB) Peržiūrėta 13844 kartus(ų)
Andrius Balsevičius, Kaunas
GeoCAD | LGMS
Vartotojo avataras
Veteranas
 
Pranešimai: 951
Užsiregistravo: 06 Geg 2009, 09:07
Miestas: Kaunas

Re: Namo braižymas per tęsinius (AutoLisp programa)

TomasGPS » 29 Geg 2009, 13:59

Todėl ir yra mėgstamas AutoCAD su savo Lisp, VBA ir ARX programavimo elementais. Kuo daugiau lankstumo ir paprastumo - tuo labiau pinigų žertis galima.
Pats tokius dalykus dariau, daug tų lispų prirašau, tiek daug palenginti sau galima, jei to įrankio AutoCAD neturi...
Leica tik tai Leica ir nieko daugiau ....
Vartotojo avataras
Veteranas
 
Pranešimai: 535
Užsiregistravo: 14 Geg 2009, 13:14
Miestas: Mančesteris

Re: Namo braižymas per tęsinius (AutoLisp programa)

geocad » 29 Geg 2009, 14:23

TomasGPS rašė:Todėl ir yra mėgstamas AutoCAD su savo Lisp, VBA ir ARX programavimo elementais. Kuo daugiau lankstumo ir paprastumo - tuo labiau pinigų žertis galima.
Pats tokius dalykus dariau, daug tų lispų prirašau, tiek daug palenginti sau galima, jei to įrankio AutoCAD neturi...

Būtent todėl į rinką bandomas įvesti Topocad man yra nepriimtinas - kaina vos ne AutoCAD'inė, o galimybės pritaikyti savo poreikiams labai ribotos.
Andrius Balsevičius, Kaunas
GeoCAD | LGMS
Vartotojo avataras
Veteranas
 
Pranešimai: 951
Užsiregistravo: 06 Geg 2009, 09:07
Miestas: Kaunas

Re: Namo braižymas per tęsinius (AutoLisp programa)

TomasGPS » 29 Geg 2009, 15:17

Nu as nebedziau jo, man vien tik jo kaina pasako - neišdegs. Bet jei neturi dar tokio interfeiso kaip programavimas - tikrai nebus populiaru.
Aš jei ieškau alternatyvos, tai tikrai su maksimaliomis galimybėmis, įskaitant programavimą. Ir tokių alternatyvų, pigesnių nei tas Topocad ir Geomap, tikrai yra, tik reikia jas pritaikyti.
Leica tik tai Leica ir nieko daugiau ....
Vartotojo avataras
Veteranas
 
Pranešimai: 535
Užsiregistravo: 14 Geg 2009, 13:14
Miestas: Mančesteris

Re: Namo braižymas per tęsinius (AutoLisp programa)

TomasGPS » 29 Geg 2009, 15:17

Be to, dauguma alternativių AutoCAD programų palaiko Lispą ir VBA, beveik be jokių pakeitimų.
Leica tik tai Leica ir nieko daugiau ....
Vartotojo avataras
Veteranas
 
Pranešimai: 535
Užsiregistravo: 14 Geg 2009, 13:14
Miestas: Mančesteris

Re: Namo braižymas per tęsinius (AutoLisp programa)

geocad » 29 Geg 2009, 15:23

TomasGPS rašė:Be to, dauguma alternativių AutoCAD programų palaiko Lispą ir VBA, beveik be jokių pakeitimų.

Žinau, kad Cadopia IntelliCAD palaiko ir AutoLisp ir VBA, tereikia šiek tiek perdaryti programas.
Pagrindinis alternatyvių programų minusas yra tas, kad jos negali dirbti su objektams prisegta GIS informacija.
Andrius Balsevičius, Kaunas
GeoCAD | LGMS
Vartotojo avataras
Veteranas
 
Pranešimai: 951
Užsiregistravo: 06 Geg 2009, 09:07
Miestas: Kaunas

Re: Namo braižymas per tęsinius (AutoLisp programa)

TomasGPS » 29 Geg 2009, 15:49

Ar turi omeny atributinę informaciją?
Leica tik tai Leica ir nieko daugiau ....
Vartotojo avataras
Veteranas
 
Pranešimai: 535
Užsiregistravo: 14 Geg 2009, 13:14
Miestas: Mančesteris

Re: Namo braižymas per tęsinius (AutoLisp programa)

geocad » 29 Geg 2009, 15:53

TomasGPS rašė:Ar turi omeny atributinę informaciją?

Būtent taip. Jei žinai kokių alternatyvų, gali parašyti.
Dar vienas pastebėjimas - nors Cadopia rašo, kad .dwg yra jos savasis (native) formatas, bet pvz. buvo atvejis, kai "šiukšlinas" .dwg brėžinys lauždavo IntelliCAD, o AutoCAD'ui nieko.
Suderinamumas labai svarbu, nors, iš kitos pusės, monopolija irgi užknisa.
Andrius Balsevičius, Kaunas
GeoCAD | LGMS
Vartotojo avataras
Veteranas
 
Pranešimai: 951
Užsiregistravo: 06 Geg 2009, 09:07
Miestas: Kaunas

Re: Namo braižymas per tęsinius (AutoLisp programa)

TomasGPS » 29 Geg 2009, 18:54

Ta AutoCAD monopolija vat ir užknisa. Intellicadas siulė jam prisijungti prie jų, tačiau jis visada atsisako.
Bentley ir tas prisijungė prie intellicado.
Leica tik tai Leica ir nieko daugiau ....
Vartotojo avataras
Veteranas
 
Pranešimai: 535
Užsiregistravo: 14 Geg 2009, 13:14
Miestas: Mančesteris

Re: Namo braižymas per tęsinius (AutoLisp programa)

Vaidas » 11 Bir 2009, 17:42

TomasGPS rašė:Ta AutoCAD monopolija vat ir užknisa. Intellicadas siulė jam prisijungti prie jų, tačiau jis visada atsisako.
Bentley ir tas prisijungė prie intellicado.


AutoCAD kaina užmuša. O alternatyvų Lisp ir Vlisp galimybės jau susilygino su AutoCAD, ko nebuvo dar prieš pora metų. Šiandien eksportavau vieną aplikaciją iš AutoCAD į Bricscad - likau patenkintas. Net veikia greičiau.
Myliu Lispą
Pradedantysis
 
Pranešimai: 2
Užsiregistravo: 11 Bir 2009, 17:32

Kitas

Dabar prisijungę
Vartotojai naršantys šį forumą: Registruotų vartotojų nėra ir 14 svečių