Despre Lini in Autocad 2006

Creat de SSamuel, Iul 07, 2011, 07:13 PM

« precedentul - următorul »

SSamuel

Salut. Vreau sa va intreb cum pot sa fac o linie in autocad cu directie de scurgere, adic sa aiba si sageti de sens , trebuie sa folosesc aceste lini pentru sensul de scurgere al une canalizari.
Ma puteti ajuta si pe mine cu acest lucru?

SSamuel

Multumesc pentru ajutor, merge smecheria, dar mai am o rugaminte, cum fac sa se vada mai mare sageata de pe linie pentru ca ma intereseaza sensul sa se vada mai mare.

zamfy

#2
Uitati un lisp rapid aici:
(defun c:sa (/ *error* scl uFlag ActiveSelSet)
(setvar "CMDECHO" 0)
 (vl-load-com)
  (setq doc (cond (doc) ((vla-get-ActiveDocument
                           (vlax-get-Acad-Object)))))

  (defun *error* (msg)
    (and uFlag (vla-EndUndomark doc))
    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
        (princ (strcat "\n** Error: " msg " **")))
    (princ))
;;selectam polilinia
(setq contur (car (entsel "\nSelecteaza polilinia:")))
(setq inc (if (vlax-curve-isClosed contur) 1 0))
;;cream sagetile de sens
 (while (<= inc (vlax-curve-getEndParam contur))
(command "_.LEADER" (vlax-curve-getPointAtParam contur (1+ inc)) (vlax-curve-getPointAtParam contur inc) "_Annotation" "" "n")
(setq  inc (1+ inc))
)
;;facem sageata mai mica sau mai mare (o valoare buna este 0.5)
  (if (and (setq scl (getreal "\nSpecifica factorul de scara pentru sageata: "))
           (ssget "_X" '((0 . "*LEADER"))))
    (progn
      (setq uFlag (not (vla-StartUndoMark doc)))
     
      (vlax-for object (setq ActiveSelSet (vla-get-ActiveSelectionSet doc))
        (vlax-put-property object 'ArrowHeadSize
          (* (vlax-get-property object 'ArrowHeadSize) scl)))

      (vla-delete ActiveSelSet)
  (setq uFlag (vla-EndUndoMark doc))))
)


Salvati textul intr-un editor de text ca nume.lsp si il incarcati in autocad cu comanda appload.
Scrieti apoi la linia de comanda sa (de la sageata) pt. a lansa programul.

Pt. linia "canalizare" ati incercat sa schimbati valoarea la linetype scale?

Modificat de zamfy (07-07-2011 19:58:19)

SSamuel

Nu am schimbat  valoare pentru ca nu stiu exact si nu vreau sa fac ceva gresit.
 o sa incerc cu acest lisp sa vad daca merge
Multumesc mult1

SSamuel

uite am incercat lu acest lisp care mi lai trimis si imi da raspunsul acesta in autocad 2006   "too few arguments"
 ce am gresit ?

John Doe

In textul care s-a adaugat in fisierul de definitii de linii, treaba e cam asa:
"A" inseamna tipul de linie definita (nu mai stiu exact de ce este tocmai A),
"STANDARD" este tipul de font folosit la litere daca linia contine si asa ceva,
"S" este scara la care sa scrie litera (adica ">" la tine)
"R" este unghiul de rotatie al literei fata de linie
X, Y sunt originile liniei.
Valorile pozitive reprezinta lungimile liniilor care se deseneaza, cele negative ale liniilor care lipsesc (ca si cum desenezi de mana si ridici creionul).

Daca pui S=0.2 de exemplu, simbolul ">" o sa fie de doua ori mai mare insa s-ar putea sa fie nevoie sa modifici si dimensiunile liniutelor. Incearca sa modifici scara liniei, dupa ce ai desenat-o.

DAR: e misto sa-ti faci liniile tale cum te taie capul, insa daca dai desenul tau altcuiva sa lucreze pe el n-o sa le mai vada, trebuie sa-i dai si fisierul de definitii al liniilor noi.

zamfy

Acesta este fisierul lisp corect:
http://www.fileshare.ro/23194681423.8" target="_blank">http://www.fileshare.ro/23194681423.8
P.S.: L-am modificat si la postul anterior, asa ca merge copiat si de acolo. Am uitat sa pun slash (/) dupa definirea functiei (la (defun c:sa (/ *error* etc.) in loc de (defun c:sa (*error* etc). Scuze.

Modificat de zamfy (07-07-2011 17:56:58)

zamfy

#7
Am modificat un pic fisierul lisp:
(defun c:sa (/ *error* scl uFlag ActiveSelSet)
(setvar "CMDECHO" 0)
 (vl-load-com)
  (setq doc (cond (doc) ((vla-get-ActiveDocument
                           (vlax-get-Acad-Object)))))

  (defun *error* (msg)
    (and uFlag (vla-EndUndomark doc))
    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
        (princ (strcat "\n** Error: " msg " **")))
    (princ))
   
    ;;selectam polilinia
(setq contur (car (entsel "\nSelecteaza polilinia:")))
(setq inc (if (vlax-curve-isClosed contur) 1 0))
;;cream sagetile de sens
 (while (<= inc (vlax-curve-getEndParam contur))
(command "_.LEADER" (vlax-curve-getPointAtParam contur (1+ inc)) (vlax-curve-getPointAtParam contur inc) "_Annotation" "" "n")
(setq  inc (1+ inc))
)
  (princ)
  )
 
(defun c:mfs ()
 (if (and (setq nfs (getreal "\nSpecifica noul factor de scara: "))
           (ssget "X" '((0 . "*LEADER"))))
    (progn
      (setq uFlag (not (vla-StartUndoMark doc)))
     
      (vlax-for object (setq ActiveSelSet (vla-get-ActiveSelectionSet doc))
        (vlax-put-property object 'ArrowHeadSize
          (* (vlax-get-property object 'ArrowHeadSize) nfs)))

      (vla-delete ActiveSelSet)
      (setq uFlag (vla-EndUndoMark doc))))

  (princ)
  )

Are 2 comenzi acum:
sa pentru a pune directia pe linii si mfs pentru a modifica factorul de scara al sagetilor.
Poate va fi de folos. Ssamuel, incearca-l pe asta, e mai bun.

advex

#8
Citat din: SSamuelSalut. Vreau sa va intreb cum pot sa fac o linie in autocad cu directie de scurgere, adic sa aiba si sageti de sens , trebuie sa folosesc aceste lini pentru sensul de scurgere al une canalizari.
Ma puteti ajuta si pe mine cu acest lucru?

Pentru a evita modificarea fisierului acad.lin si durerile de cap pentru stabilirea parametrilor indicati de John iti recomand utilizarea aplicatiei LTFly, in versiunile lsp sau vlx, disponibila la http://www.cadstudio.cz/dl_file.asp?ID=1052

Aplicatia este intuitiva, poti sa scrii orice text in cadrul liniei, informatii despre canalizare, diametre etc, sensul il marchezi cu ">". Dupa rularea aplicatiei, ai imediat disponibil tipul de linie in managerul de linii, fara resetarea Autocad sau alta operatiune.
In privinta marimii sensului de scurgere ai la dispozitie "scale" in meniul "properties" (deschizi cu CTRL+1 sau din meniu general) sau comanda globala ltscale pentru toate liniile din desen.

Daca vrei sa schimbi sensul de scurgere, iti poti crea alt tip de linie sau poti utiliza orice aplicatie lisp de modificare a sensului unei linii sau polilinii. De exemplu, RvrsLine - vezi http://www.cadstudio.cz/dl_file.asp?ID=753