Tisztelt Papp Ferenc!
Először is köszönöm a gyors válaszát, és azt is, hogy egyáltalán energiát fordít a mi kis ügyes bajos gondjainkra. Ebben a rohanó világunkba nem sok emberbe maradt meg mára az emberség, és a segítő készség.
A geo_vonal programot ismét letöltöttem. Most már elindul, de érzésem szerint megfelelően működik.
Egy olyan kérdésem lenne, hogy esetleg az S – ENTER funkciót, nem lehet-e, felbővíteni, úgy, hogy a program bekér egy TXT-t, vagy koordinátákat tartalmazó fájlt, amiben kezdő és végpontok koordinátája van megadva, és a program-e pontok közé húz vonalakat.
Digitális közmű térkép feldolgozásához lenne rá nagy-nagy szükségem
Üdvözlettel:
Németh Norbert
Pécs
A Letölthető AutoLisp programok - Blokkreferenciák elhelyezése pontokra lapon elérhető a program legújabb verziója, amely az itt korábban felmerült ötlet szerint, blokkreferenciákra is képes elhelyezni új blokkreferenciákat, az eredeti blokkreferenciákhoz tartozó attribútumok értékének figyelembe vételével is.
Kedves Norbert!
Amennyire örülök, hogy hasznosnak találja az itt közzétett programokat, annyira szégyenlem, hogy már megint a slendriánságom miatt tettem közzé hibásan működő programot. Nem is csak az ön által észlelt hiba volt benne.
Nem mentség, csak magyarázat erre, hogy rettenetesen rühellek programot tesztelni Az itt közzétett AutoLisp programok legtöbbike egy régóta fejlesztgetett, kiegészítgetett programom részeként született meg, és amikor kiemelem és önállóan futtathatóvá alakítom ezeket, mindig tüzetesen meg kellene győződnöm arról, hogy a nagy program által biztosított futtatási környezet nélkül is rendesen működnek.
Ha a programjaimban valami hibát vétek, a közvetlen környezetemben dolgozó, és azokat nap mint nap használó kollégáim egykettőre az orrom alá dörgölik a hibákat. És ez igen kényelmes megoldás egy lusta programozó számára. Állítólag a számítástechnika fejlődésében is nagy hajtóerő az emberi lustaság, csak mint láthatjuk, itt is fontos a mérték és a kontroll.
Sajnos a honlap üzemeltetése során gyakorta tapasztalom azt, hogy a látogatóim valamiért ózkodnak attól, hogy a problémáikat megosszák velem, és figyelmeztessenek a hibákra, vagy tanácsot kérjenek, ha valamit nem tudnak működésre bírni. Pedig minden ilyen szempontból szóbajöhető oldalon külön megkérem őket erre. Köszönöm, hogy Ön respektálta a kérésemet!
A geo_vonal programot kijavítottam, és feltettem a szerverre. Kérem, töltse le, próbálja ki, és jelezze megfelelően működik-e!
Tisztelt Papp Ferenc!
Németh Norbert vagyok. Munkáim során örömmel használom az Ön lisp programjait, melyek sok segítséget jelentenek számomra.
Ezúton is köszönöm, hogy számunkra, halandó cad-eseknek elérhetővé teszi ezen kis programokat.
Mint ahogy írta honlapján, és tetszett kérni, hogy ha valaki, valami hibát észlel, akkor azt jelezze önnek.
Én szerettem volna kipróbálni a speciális vonalat szerkesztő lispet, de sajnos nem bírom munkára bírni sehogy sem. Lehet bennem van a hiba, és valamit én nem csinálok jól, de mikor be szeretném hívni akkor a következő üzenet jelenik meg nekem.
; hiba: rossz argumentum típus: stringp nil
Üdvözlettel:
Németh Norbert
Pécs
A Letölthető AutoLisp Programok lapon, blokkreferenciák lecserélésére használható új funkció érhető el.
A funkciót egy nagyobb programomból emeltem ki, ezért kissé át kellett alakítanom. Remélem eléggé alaposan leteszteltem ahoz, hogy ne maradjon benne hiba.
Kedves William!
Úgy gondolom a kérdéses funkció a Pontok beolvasása fájlból, és megjelölésük attribútumos blokkokkal címmel letölthető programocska lenne.
Az igazság az, hogy a letölthető programok részben merő anyagiasságból nem tartalmaznak minden olyan lehetőséget, amelyek igazán kompletté tennék azokat, mert akkor ki venné meg a teljes verziót. Mindazonáltal, ha visszaolvassa ezt az üzenő-füzetet, láthatja, hogy nem vagyok merev ebben a tekintetben, és már több esetben is eleget tettem az ilyen igényeknek. Ebben az esetben is fontolóra veszem a dolgot. Addig is némi többletmunkával megoldható a dolog úgy, hogy a beolvasandó pontokat tartalmazó fájlt a blokkreferencia jellegét kódoló attribútum szerint rendezi (pédául excel-ben), és a kükönböző attribútumokat tartalmazó rekordokat külön fájlokba helyezi át. Tehát létrehoz egy-egy fa.txt, villanyoszlop.txt, akna.txt, ..., fájlt, majd azokat egyenként beolvastatva a programmal, mindig megadhatja az éppen használandó blokkot. Persze nagy számú különböző attribútumérték esetén ez elég macerás, de megteheti azt is, hogy a kis példányszámú objektumokat egyetlen fájlból olvassa be, majd utólag lecseréli a blokkreferenciáikat a megfelelőre.
Tiszteletem kedves Ferenc!
Régebben már írtam egy program javaslatot. Ez annyit takart hogy a beilleszett pontoknak vannak atributumai (fa, villanyoszlop, akna stb.) és az lenne jó ha lenne egy olyan lisp aminél megadhatnám hogy melyik atributumra milyen blokkreferenciát tetegyen és akkor rá rakná az összesre amit talál.
nem értek hozzá nem tudom hogy ez mennyire macerás, de biztos sokat segítene nem csak nekem hanem másnak is.
mellékelek egy kezelő felületet hogy én hogy gondoltam...
ha szánna rá időt és megnézzné hogy megvalósítható e azt nagyon megköszönném.
Tisztelettel William
Kedves Tamás!
Az entitás lista alatt elemazonosítók (-1 DXF csoportkód) listáját érti? Ilyet még nem használtam. Ehelyett az elemneveket (5 DXF csoportkód) célszerű használni, mert azok a velük azonosított objektum teljes élettartama alatt változatlanok maradnak, míg az elemazonosítók a DWG állomány minden megnyitásakor újra generálódnak.
Ha megnézi, a DXF referenciában nincs is utalás arra, hogy az elemazonosítókat valahogyan meg lehetne jeleníteni DXF -be íráskor.
A program hibáját az okozza, hogy az elemazonosítókat tartalmazó adat kiírásakor az ini fájlban tárolt lista szerkezete tönkremegy. Nem párosíthatóak össze benne az allistákat határoló zárójelek. Tehát a funkció nem alkalmas elemazonosítók tárolására.
Újra fogad hozzászólásokat az üzenő füzet.
Nem túl erős a védelme, de talán egyenlőre ez is megteszi. A védelem módja az, hogy a hozzászólások megadásakor a látogató neve végén mindig szerepelnie kell a (látogató) karaktersorozatnak. Egy primitívebb spammer robotot talán át lehet így verni. Ha meg személyesen buherálná valaki ezt az oldalt, akkor nekem úgy is annyi.
Valami debil 'cracker' telenyomta az üzenő füzetemet pornó spammel. Alig győztem törölni őket.
Amíg nem találok megoldást a kivédésére, az üzenő füzet nem fogad hozzászólásokat.
Kedves Tamás!
Én a következőképpen használom:
Beállítom a változók értékeit:
(setq alma '("jonatán" "gold" "delicsesz"))
(setq körte "vilmos")
(setq szilva "bercencei")
Kiíratom ini fájlba:
(pfgeo_ini_ki "gyümölcsszínek" '("alma" "körte" "szilva"))
Beolvastatom az ini fájlból:
(pfgeo_ini_be "gyümölcsszínek" '(("alma" "?") ("körte" "?") ("szilva" "?")))
A parancssorban megjelenik a beolvasott lista:
(("alma" ("jonatán" "gold" "delicsesz")) ("körte" "vilmos") ("szilva" "bercencei"))
Ha továbbra sem működik, küldjön, vagy íron le itt egy mintát, hogyan használná.
Kedves Ferenc!
A segédprogramok között talált változókiíratás fileba funkciót próbálom használni.
Egy esetben nem műkdik, a változó egy entitás listát kap, a kiírás meg is történik teljesen rendben.
Beolvasásnál az alább hibaüzenetet kapom.
; hiba: túl sok cdr a bemeneti pontozott listában
próbálom parancssorból is:
(load (strcat progutv ini_file_nev)) már itt bejön a hibaüzenet.
Hogy lehetne fileban tárolt entitás listát beolvasni?
Üdv: Tamás
Kedves András!
Köszönöm, hogy felhívta a figyelmemet a hibára. A programot nem a letöltésnél megadott névvel lehetett hívni.
Kijavítottam. Úgy tűnik jól működik.
Kérem töltse le újra, és próbálja ki.
Kedves Ferenc!
A
nem funkcionál.Command: (kar_csere)
; error: no function definition: KAR_CSERE
Üdvözlettel.
A Letölthető AutoLisp rutinok című oldalról letölthető a LINE, LWPOLYLINE rajzelemek végpontjainak felcserélése című AutoLisp program új verziója, amely kezeli az íves szakaszokat tartalmazó vonalláncokat, és a vonalláncok szélességét is.
El voltam tévedve!
Azt hittem önálló ív (ARC) rajzelemre gondolt. Most értettem meg, hogy könnyű vonalláncok íves szakaszairól van szó. Az én gyakorlatomban ilyet még nem használtam, de másoknak bizony szüksége lehet erre, és a szélesség tulajdonságokra is.
Köszönöm!
Be is építem a közzétett programba amint tehetem.
Kedves Ferenc!
A 40-es csoport az , ami azt szabályozza, ezt oldja meg így a programocska, jól működik.
Üdv: Tamás
Kedves Tamás!
Gondolom ívek esetén az elemlista 50 és 51 csoportkódú allistáinak értékét kell felcserélni, de a mellékelt programkódban nem látom az ezt megvalósító részt. Valószínűleg nem a végleges programkódot másolta ide.
Ha programkódot illeszt az üzenetébe, akkor célszerű azt úgy megoldani, hogy a szövegbeviteli mező fölött található HTML feliratú ikonra kattintva megjeleníti a HTML forrás szerkesztőt, és a programkódot <pre> és </pre> (preformatted = előformázott) HTML tag-ek közé illeszti be.
Példa:
<pre>
(defun vegpontcsere_error (h_uz /)
(setq *error* old_vpcs_error)
(vla-EndUndoMark
(vlax-get-property (vlax-get-acad-object) 'ActiveDocument)
)
(princ "\nHibaüzenet: ")
(princ h_uz)
(princ "\n")
)
(setq
old_vpcs_error *error*
*error* vegpontcsere_error
)
</pre>
Így a kód megőrzi eredeti formázását és valamivel áttekinthetőbben jelenik meg. Hátránya ennek a megoldásnak, hogy a hosszú sorok automatikus tördelése nem érvényes rá, így arról előre gondoskodni kell.
Köszönet az alapokért!
Jónak tűnik ívekre is! :)
(defun c:vpcs ( / h_uz kp vp is ptlst q apt ptlst_40 e_40 apt_40) ;---- Felcseréli a vonalak/vonalláncok végpontjait. (defun vegpontcsere_error (h_uz /) (setq *error* old_vpcs_error) (vla-EndUndoMark (vlax-get-property (vlax-get-acad-object) 'ActiveDocument) ) (princ "\nHibaüzenet: ") (princ h_uz) (princ "\n") ) (setq old_vpcs_error *error* *error* vegpontcsere_error ) (vla-EndUndoMark (vlax-get-property (vlax-get-acad-object) 'ActiveDocument) ) (vla-StartUndoMark (vlax-get-property (vlax-get-acad-object) 'ActiveDocument) ) (setq ent (entsel "\nVonal/vonallánc kiválasztása ")) (setq eleml (entget (car ent))) (if (equal (cdr (assoc 0 eleml)) "LINE") (progn (setq kp (cdr (assoc 10 eleml)) vp (cdr (assoc 11 eleml)) is (angle kp vp) ) (if (> is pi) (entmod (subst (cons 11 kp) (assoc 11 eleml) (subst (cons 10 vp) (assoc 10 eleml) eleml ) ) ) ) ) ) (if (equal (cdr (assoc 0 eleml)) "LWPOLYLINE") (progn (setq ptlst nil ptlst_40 nil e_40 nil q 0 ) (while (setq q (1+ q) apt (cdr (assoc_n 10 "" "" q eleml)) apt_40 (cdr (assoc_n 40 41 42 q eleml)) ) (if apt (setq ptlst (append ptlst (list (cdar apt))))) (if apt_40 (cond ((= (caar apt_40) 40) (setq e_40 (list (cdar apt_40))) ) ((= (caar apt_40) 41) (setq e_40 (append e_40 (list (cdar apt_40)))) ) ((= (caar apt_40) 42) (setq e_40 (append e_40 (list (cdar apt_40)))) (setq ptlst_40 (append ptlst_40 (list e_40))) ) ) ) ) (setq kp (car ptlst) vp (last ptlst) is (angle kp vp) ) (if (and (> is (/ pi 2)) (< is (+ (/ pi 2) pi))) (progn (setq ptlst (reverse ptlst)) (setq ptlst_40 (reverse ptlst_40)) (setq ptlst_40 (append (cdr ptlst_40) (list (car ptlst_40)))) (setq q -1) (while (setq q (1+ q) apt (nth q ptlst) apt_40 (nth q ptlst_40)) (setq eleml (subst_n eleml (cons 10 apt) 10 (1+ q) nil)) (setq eleml (subst_n eleml (cons 40 (car apt_40)) 40 (1+ q) nil)) (setq eleml (subst_n eleml (cons 41 (cadr apt_40)) 41 (1+ q) nil)) (setq eleml (subst_n eleml (cons 42 (- (caddr apt_40))) 42 (1+ q) nil)) ) (entmod eleml) ) ; progn ) ; if ) ; progn ) ; if (vla-EndUndoMark (vlax-get-property (vlax-get-acad-object) 'ActiveDocument) ) (setq *error* old_vpcs_error) (princ) ) (defun subst_n (e_lista prop csopk szam beszur / u_lista pm_q db) ;----Módositja az E_LISTA -ban átvett asszociációs listát úgy, hogy újra felépíti a ;----listát a CSOPK -ben magadott csoportkódú allista SZAM -adik elöfordulása helyére, ;----vagy utána, beszúrja a PROP -ban átvett listát a BESZUR paraméter nil vagy T érté- ;----kének megfelelően. (setq u_lista '() pm_q -1 db 0 ) (while (setq pm_q (1+ pm_q) allist (nth pm_q e_lista) ) (if (= csopk (car allist)) (if (= (setq db (1+ db)) szam) (if beszur (setq u_lista (append u_lista (list allist) (list prop))) (setq u_lista (append u_lista (list prop))) ) (setq u_lista (append u_lista (list allist))) ) (setq u_lista (append u_lista (list allist))) ) ) ) (defun assoc_n (csopk1 csopk2 csopk3 szam e_lista / u_lista pm_q db) ;---- Visszaadja az E_LISTA -ban átvett asszociációs ;---- lista SZAM -adik CSOPK csoportkódú allistáját. ;---- Ha nem létezik, a visszatérési érték nil. (setq u_lista nil pm_q -1 db 0 ) (while (and (not u_lista) (setq pm_q (1+ pm_q) allist (nth pm_q e_lista) ) ) (if (equal (type allist) 'list) (if (or (= csopk1 (car allist)) (= csopk2 (car allist)) (= csopk3 (car allist)) ) (setq db (1+ db) u_lista (if (= szam db) allist u_lista) ) ) ) ) (setq u_lista (if (= csopk1 (car allist)) (list csopk1 u_lista) (if (= csopk2 (car allist)) (list csopk2 u_lista) (if (= csopk3 (car allist)) (list csopk3 u_lista) ) ) ) ) ) (princ "\n")
(princ "\n LINE, LWPOLYLINE rajzelemek végpontjainak felcserélése")
(princ "\n Hívása: c:vpcs")
(princ "\n")
Kedves Ferenc!
Végpontcsereprogramocskára lett volna szükségem,
sajnálattal veszem észre, hogy az ívekkel nem törődik. :(
Na próbálkozok!
Üdv!
Kedves Schotti
Az AutoCAD és annak arx fájlbővítményű kiterjesztései C programozási nyelven megírt, gépi kódra fordított programok. Csak akkor képesek együtt működni, ha ugyanannak a C fordítóprogramnak ugyanazzal a verziójával vannak gépi kódra fordítva.
A fordítóprogramoknak is jelennek meg időnként fejlettebb verziói, és az új verzióval lefordított új AutoCAD kiadásokhoz mindig újra le kell fordítani a vele használni kívánt arx kiterjesztéseket is.
Ha nem tudja beszerezni a kérdéses arx fájl AutoCAD 2010 -hez tartozó verzióját, akkor nem fogja tudni használni.
Jó szerencsét!
Lenne egy olyan kérdésem, hogyan lehetne egy "arx" kiterjesztésű programot, ami fut R14 alatt átalakítani, hogy az újabb AutoCad (pl. 2010) be tudja tölteni?
Segítségét előre is köszönöm!
Üdvözlettel:
Schottmann János
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.