Newsgroup: it.comp.software.cad
Titolo: 1) intersezione di superfici e 2) acad.pgp

Saluti al ng,
sto realizzando attraverso autocad14 (che so bene essere il sw meno
indicato per questo tipo di lavoro, pero' questo mi chiedono..) un
modelo in 3D di una copertura fatta a volte a botte con pennacchi
laterali e altri tipi di superfici.
iI problema di cui vi voglio parlare si presenta quando dopo avere
costruito le varie superfici (con rulesurf, ecc) devo eliminare le
parti che eccedono dall'intersezione. Trim non esegue il taglio; non
avendo usato molto la modalita' 3D ma solo in 2D sto imprando solo ora
i vari comandi 3D, quindi vi chiedo quale comando utilizzare per le
superfici che si intersecano?? oppure come individuare la linea
intersezione con precisione (attraverso gli snap o altro) e quindi
contruire la superficie da tale linea??
uso acad14 ma volendo anche acad2000 se contiene un comandi
appropriato che fa al caso mio.
e poi: e' possibile che un .dwg memorizzi i comandi abbreviati
contenuti in acad.pgp da una versione in inglese(14) e non eseguire i
comandi abbreviati del .pgp della versione in italiano(14)? perche'
questo mi succede in un file eseguito e salvato dalla vers in inglese
ma non utilizzabile con le abbr. di quella italiana!
mi sembra molto strano.. sapete qualcosa?
grazie a quanti potranno rispondere.
ciao.
 

Posso risponderti solo alla seconda domanda.
Crea un file .pgp con i comandi inglesi preceduti da _ (trattino sotto). Ad
es.
L,       _line
Questo ti permetterà di usare le abbreviazioni sia in italiano che in
inglese.
ciao
Cociredef

anche questo l'avevo fatto ma non funziona, lo so che e' strano,
infatti non me lo spiego.
nella vers 12 dos ita cio' funzionava in quella ita win 14 non mi
funziona, sembra che il disegno abbia memorizzato i comandi..
bo!!
grazie cominque.


 ciao.
Non è possibile che un disegni salvi le abbreviazione dei comandi.
Una spiegazione possile è che nella stessa cartella del disegno in questione
esista un altro file .pgp.
AutoCAD carica prima quello nella cartella di redinza del file .dwg poi
quello nel percorso
di ricerca dei file. Metter underscrore"_" davanti al comando in lingua
inglese nel .pgp
su AutoCAD in Italiano non funzione.

mi cospargendo cenere sulla testa, sob!!! c'e' un .pgp sulla stessa
cartella, non l'avevo cercatooooo!!!  Grazie.
sai dirmi qualcosa sulle superfici da tagliare??
grazie di nuovo.






Ho una buona notizia per te: le superfici 
in Autocad non si possono nè tagliare nè estendere. Le puoi solo stirare o 
scalare. Ma, da quanto, ho capito il disegno in questione è complesso. Non ti 
resta che cancellare tutto e rifare da capo. Oppure, se proprio non puoi fare a 
meno di intersecare, usa i solidi, quelli si che si possono 
editare.


Buon 
lavoro



In data astrale Thu, 31 Aug 2000 22:36:20 GMT, 
xe...@cybergal.com
(xenon) non avendo null'altro da fare, ha scritto:
Le superfici non si possono intersecare, i solidi si, quindi ecco che
il buon samaritano ti manda un bel lisp che fa al caso tuo... converte
le superfici in solidi e tutto è fatto.
---- Inziio Lisp ----
;;    M2S  (Mesh-to-Solid)
;;    Creates an ACIS solid from an open 3d polygon mesh.
;;
;;    Take 2b - Updated 5/24/1999
;;       - Works with REVSURF'd meshes that touch or cross axis of
revolution.
;;       - Works even if solid being constructed is not fully visible
on screen.
;;       - Works with all open meshes created with REVSURF, RULESURF,
;;          EDGESURF, TABSURF, AI_MESH, and 3DMESH. Most of the stock
3D
;;          surfaces will work if you use DDMODIFY to open them in the
M
;;          and N directions.
;;       - Does not work with polyface entities.
;;       - _. prefix added to commands for compatibility with CSG
editor and
;;         international users
;;
;;    (c) Copyright 1998,1999 by Bill Gilliss.  
;;    All rights reserved... such as they are.
;;
;;    
bill.g...@aya.yale.edu
 
gil...@iglou.com
;;
;;       I wrote this to create sculptable ACIS terrain models
;;    for architectural site renderings. It could also be used
;;    to create thin shells from meshes, by subtracting a moved
;;    copy of the solid from the original solid, but Acad2000 now
;;    does a much better job of this.
;;
;;       The solid is created by projecting each mesh facet "down"
;;    the *current* z-axis to a plane a user-specified distance below
;;    the lowest vertex. To assure that all parts of the mesh are
;;    generated as solids, this distance can not be zero, but the
;;    solid can be SLICEd later if need be.
;;
;;       The solid will match the displayed mesh: if the mesh has
;;    been smoothed and SPLFRAME is set to 0, the solid will be
;;    smoothed. Otherwise, it will not be. The mesh itself is not
;;    changed at all.
;;
(defun c:m2s (/  ent ename entlst M N MN SN SM ST smooth oldecho vtx
d1
                 low vtxcnt vtxmax bot bottom p1 p2 p3 p4 c1 c2 c3 c4 
                 b1 b2 b3 b4 soldepth ssall ssrow)
(setq oldecho (getvar "cmdecho"))
(setq oldsnap (getvar "osmode"))
(setq oldblip (getvar "blipmode"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setvar "blipmode" 0)
(command "_.undo" "begin")
;;select the mesh
  (setq ent (entsel "Select a polygon mesh to solidify: "))
  (setq ename (car ent))
  (setq entlst (entget ename))
  (if (not (= (cdr (assoc 0 entlst)) "POLYLINE"))
    (progn
      (alert "That is not a polygon mesh.")
      (exit)
      (princ)
    );progn
  );endif
  (if
    (not
      (or
       (= (cdr (assoc 70 entlst)) 16) ;open 3d polygon mesh
       (= (cdr (assoc 70 entlst)) 20) ;open mesh w/ spline-fit
vertices
        );or
       );not
     (progn
       (alert "That is not an *open* polygon mesh.")
       (exit)
       (princ)
     );progn
  );endif
;; decide whether to use smoothed or unsmoothed vertices
  (setq M (cdr (assoc 71 entlst)))   ;M vertices
  (setq N (cdr (assoc 72 entlst)))   ;N vertices
  (setq SM (cdr (assoc 73 entlst)))  ;smoothed M vertices
  (setq SN (cdr (assoc 74 entlst)))  ;smoothed N vertices
  (setq ST (cdr (assoc 75 entlst)))  ;surface type
  (if
    (or
      (= (getvar "splframe") 1)      ;use MxN vertices when splframe =
1
      (= ST 0)                       ;or mesh has not been smoothed
      )
    (setq smooth 0
         MN (* M N))
    (setq smooth 1                   ;use SMxSN vertices when mesh is
smoothed 
          MN (* SM SN)               ;and SPLFRAME = 0
          M SM
          N SN)
    );if
;; determine lowest vertex
  (grtext -2 "Checking out the mesh...")
  (setq vtx ename)
  (setq vtx (entnext vtx))
  (setq d1 (entget vtx))
  (setq bottom (caddr (trans (cdr (assoc 10 d1)) 0 1)))
 
  (repeat (1- MN)   ;compare with each vertex's z coord
    (setq vtx (entnext vtx))
    (setq d1 (entget vtx))
    (setq low (caddr (trans (cdr (assoc 10 d1)) 0 1)))
    (setq bottom (min bottom low))
    );repeat
;; get desired thickness of solid
  (setq soldepth 0)
  (while
     (zerop soldepth)
     (progn
       (setq soldepth 
          (getdist "\nEnter desired thickness of solid below lowest
vertex <1>: "))
       (if (not soldepth) (setq soldepth 1.0))
       (if (zerop soldepth)
          (princ "\nThickness can be small, but not zero. (Slice it
later, if need be.)"))
        );progn
     );while
  (setq bot (- bottom (abs soldepth)))
 
  (setq p1 ename)
  (if (= smooth 1)
      (setq p1 (entnext p1))) ;skip 1st vtx of smoothed mesh - not
true vtx
  (setq ssrow (ssadd))        ;initialize set of extruded segments to
be unioned as a row
  (setq ssall (ssadd))        ;initialize set of rows to be unioned
into the whole
  (grtext -2 "Creating row...")
  (setq vtxmax (- MN N))  
  (setq vtxcnt 1)
;;create row of solid segments
  (while (< vtxcnt vtxmax)
    (if (= 0 (rem vtxcnt N))  ;at end of each row...
        (progn
          (setq rowmsg (strcat "Unioning row "
                       (itoa (/ vtxcnt N)) " of "
                       (itoa (1- M)) "... "))
          (grtext -2 rowmsg)
          (command "_.union" ssrow "")
          (setq row (entlast))
          (ssadd row ssall)
          (setq ssrow (ssadd))
          (setq p1 (entnext p1)         ;skip to the next vertex
                vtxcnt (1+ vtxcnt))
          );progn
        );if
 
    (grtext -2 "Creating row...")
    (setq p1 (entnext p1)                  ;first vertex of mesh
square
          p2 (entnext p1)                  ;second vertex
          p3 p2)
    (repeat (1- n) (setq p3 (entnext p3))) ;walk along to 3rd (p1 + N)
vertex
    (setq p4 (entnext p3))                 ;4th vertex of mesh square
    (setq c1 (trans (cdr (assoc 10 (entget p1))) 0 1) ;top coordinates
          c2 (trans (cdr (assoc 10 (entget p2))) 0 1)
          c3 (trans (cdr (assoc 10 (entget p3))) 0 1)
          c4 (trans (cdr (assoc 10 (entget p4))) 0 1)
          b1 (list (car c1) (cadr c1) bot)            ;bottom
coordinates
          b2 (list (car c2) (cadr c2) bot)
          b3 (list (car c3) (cadr c3) bot)
          b4 (list (car c4) (cadr c4) bot))
          (LOFT c1 c2 c3 b1 b2 b3)
          (LOFT c2 c3 c4 b2 b3 b4)
    (setq vtxcnt (1+ vtxcnt))
  );while
 (grtext -2 "Unioning last row...")
  (command "_.union" ssrow "")
  (setq row (entlast))
  (ssadd row ssall)
  (if (> M 2)       ;bypass final union for N x 1 meshes (i.e.,
RULESURF)
    (progn
      (grtext -2 "Unioning all rows...")
       (command "_.union" ssall "")
        );progn
     );if
;;cleanup
  (command "_.undo" "end")
  (setvar "cmdecho" oldecho)
  (setvar "osmode" oldsnap)
  (setvar "blipmode" oldblip)
  (setq ssall nil ssrow nil)
  (princ)
);defun
;;============== SUBROUTINES ====================
(defun LOFT (r1 r2 r3 s1 s2 s3 / e1 extr highest)
  (command "_.area" s1 s2 s3 "")
  (if (not (equal (getvar "area") 0.0 0.00000001))
    (progn
      (command "_.pline" s1 s2 s3 "c")
      (setq highest (max (caddr r1) (caddr r2) (caddr r3)))
      (setq extr (- highest bot))
      (command "_.extrude" (entlast) "" extr 0.0)
      (command "_.slice" (entlast) "" "3points" r1 r2 r3 s1)
      (setq e1 (entlast))
      (ssadd e1 ssrow)
      );progn
    );if
  );defun
(princ "M2S loaded.")
--- Fine Lisp ----
Scusate se lungo ma era l'unico modo per mandarlo.
Aniello Annunziata
Webmaster di CADLandia
aniello.a...@cadlandia.com
www.cadlandia.com

---- Inziio Lisp ----
[cut]


 ha scritto nel messaggio
news:39b2d004...@News.CIS.DFN.DE...


solidi direttamente in acad
Su CADlandia c'č una utility in Lisp, si chiama M2S.LSP, l'ho piů
volte spedita anche su questa lista, ma a quanto si dice, non funziona
copiandola ed incollandola (per via della lunghezza di riga fissata,
alcune parole vanno a capo e alterano la sequenza dei comandi), per
cui consiglio di andare a visitare CADLandia e scaricarla da li.
Il Lisp trasforma Polymesh in Solidi. Ed il risultato č eccellente.
L'unico problema č che non funziona con le superfici chiuse.
Saluti, Aniello
-- 
Aniello Annunziata
Direttore Marketing di CADLandia
www.cadlandia.com
aniello.a...@cadlandia.com
Per rispondermi in privato, togli NOGARBAGE dall'indirizzo