Aller au contenu

la commande \"extend\"


juju_30

Messages recommandés

Bonjour,

 

j'ai un petit souci au niveau de la commande "extend".

je veux prolonger plusieurs lignes (selection e1) vers une polyligne (selection capt).

ces deux variables sont verifiées et correspondent bien aux différentes entités (lignes et polylignes) séléctionnées.

cependant lorsque je lance la commande (command "_extend" capt "" e1 ""), je reçois deux messages:

- aucun seuil dans cette direction

-l'objet ne coupe pas une arête

 

à quoi cela peut être dû ?

 

merci d'avance pour vos réponses

Lien vers le commentaire
Partager sur d’autres sites

je viens d'essayer avec la variable edgemode à 1 mais ça ne marche toujours pas.

explications:

je traite deux cas dans mon programme:

-dans le premier cas je prolonge des lignes verticales sur une polyligne horizontale et je n'ai aucun souci

(la variable edgemode etant à 0)

-dans le deuxième cas je prolonge des lignes horizontales sur une polyligne verticale et là ça coince

 

j'ai essayer de faire des changement de repere mais en vain. je reste dans l'incompréhension.

 

si tu as d'autres idées, elles sont les bien venues.

Lien vers le commentaire
Partager sur d’autres sites

le programme est assez long mais si vous voulez le tester c'est pas plus mal et je vous en remercie.

quelques explications:

c'est un programme pour faire des plans de fermettes sur des batiment préfabriqué qui on des trames spécifique donc si vous voulez le tester il faut:

-faire un rectangle de 16250 mm (à l'horizontale) par 8750 (c'est l'exemple sur lequel je travail)

- le décaler par exemple de 300 vers l'exterieur pour faire un débord de toiture

- faire une toiture [surligneur] 4 pentes[/surligneur] (avec le [surligneur] faitage horizontal et centré[/surligneur])

 

il faut ensuite pointer les 4 points de la toiture

pointer deux points du premier rectangle (il y a des indications dans le programme)

pointer les deux faitages

 

je vous donne le programme (raccourci) et merci encore de me consacrer de votre temps

 

(defun c:fermettes ()

 

(command "inserer" "gabarit_cot+LRM" 0,0,0 1 1 0)

(command "_clayer" 0)

(vl-load-com)

(setvar "osmode" 679)

(setvar "cmdecho" 0)

(command "scu" "")

(command "_dimstyle" "r" "1-50" "")

 

;CREATION DU CALQUE FERMETTES

(initget "O N _oui non")

(if (eq (getkword "\n y-a-t-il un calque fermettes ? [O/N] ") "oui")

 

(progn

(command "calque" "e" "fermettes_cot" "co" 1 "fermettes_cot" "tl" "continuous" "fermettes_cot" "")

(command "_clayer" "fermettes_cot")

(command "_clayer" "fermettes")

)

 

(progn

(command "calque" "e" "fermettes_cot" "co" 1 "fermettes_cot" "tl" "continuous" "fermettes_cot" "")

(command "_clayer" "fermettes_cot")

(command "calque" "e" "fermettes" "co" 202 "fermettes" "tl" "axes" "fermettes" "")

(command "._layer" "_thaw" fermettes "_on" fermettes "_unlock" fermettes "_set" fermettes "" )

(command "_clayer" "fermettes") ;on le rend courant pour que les traits soient tracés dedans

)

)

 

;DEFINITION DES VARIABLES

 

(prompt "\n selectionnez les points exterieurs de la toiture:")

 

(setq p1 (getpoint "\n donner le premier point"))

(setq p2 (getpoint "\n donner le deuxième point"))

(setq p3 (getpoint "\n donner le troisième point"))

(setq p4 (getpoint "\n donner le quatrième point"))

 

;on definit de nouveaux point pour qu'il n'y ai pas d'ordre

 

(setq p10x (min (car p1) (car p2) (car p3) (car p4)))

(setq p10y (max (cadr p1) (cadr p2) (cadr p3) (cadr p4)))

(setq p20x (min (car p1) (car p2) (car p3) (car p4)))

(setq p20y (min (cadr p1) (cadr p2) (cadr p3) (cadr p4)))

(setq p30x (max (car p1) (car p2) (car p3) (car p4)))

(setq p30y (min (cadr p1) (cadr p2) (cadr p3) (cadr p4)))

(setq p40x (max (car p1) (car p2) (car p3) (car p4)))

(setq p40y (max (cadr p1) (cadr p2) (cadr p3) (cadr p4)))

 

(setq p10 (list p10x p10y 0.0))

(setq p20 (list p20x p20y 0.0))

(setq p30 (list p30x p30y 0.0))

(setq p40 (list p40x p40y 0.0))

 

 

 

 

 

;traçage de la bordure de la toiture

 

(command "_pline" p10 p20 p30 p40 p10 "la" 0 0 "" "")

 

 

 

(setq d1 (distance p10 p20))

(setq d2 (distance p10 p40))

 

(setq phg (list (car p10) (- (cadr p10) (/ d1 2))))

(setq phd (list (car p40) (- (cadr p40) (/ d1 2))))

(setq pvh (list (+ (car p10) (/ d2 2)) (cadr p10)))

(setq pvb (list (+ (car p20) (/ d2 2)) (cadr p20)))

 

;traçage de la première fermette

 

(setq p_int (getpoint "\n pointer l'angle interieur des panneaux (en haut à droite)"))

(setq p_intt (getpoint "\n pointer l'angle interieur des panneaux (en haut à gauche)"))

(setq d_int (distance p_int p_intt))

(setq d_res (fix (/ d_int 625)))

 

(setq p_int1 (list (car p_int) (cadr p40)))

(setq p_int2 (list (car p_int) (cadr p30)))

 

(command "ligne" p_int1 p_int2 "")

 

(setq ferm (entlast))

 

(command "scu" "3" p30 p40 p20)

(command "reseau" ferm "" "r" (+ d_res 1) 1 +625)

(command "scu" "")

 

;positionnement de la cotation du faitage

 

(command "_layer" "e" "fermettes_cot" "")

(command "_clayer" "fermettes_cot")

 

(setq phdc (list (+ (car phd) 800) (cadr phd)))

(setq p40c (list (+ (car p40) 800) (cadr p40)))

(setq p40c2 (list (+ (car p40) 1300) (cadr p40)))

 

(command "_dimlinear" p30 phd phdc)

(command "_dimlinear" phd p40 p40c)

(command "_dimlinear" p30 p40 p40c2)

 

;positionnement de la cotation des fermettes

 

(setq p_int2g (list (- (car p_int2) 625) (cadr p_int2)))

(setq p_int2gc (list (car p_int2g) (- (cadr p_int2g) 700)))

(setq p_int2c (list (car p_int2) (- (cadr p_int2) 700)))

 

(command "_dimlinear" p30 p_int2 p_int2c) ;cotation du débord

 

(setq sym (entlast))

(command "_mirror" sym "" pvh pvb "n")

 

(command "_dimlinear" p_int2 p_int2g p_int2gc) ;1ere cotation de 625

 

(setq cotat (entlast))

 

(command "scu" "3" p30 p40 p20)

(command "reseau" cotat "" "r" d_res 1 +625)

(command "scu" "")

 

;traçage des polylignes

 

(command "_clayer" "fermettes")

 

(setq fait_g (getpoint "\n cliquer sur le faitage gauche"))

 

(command "_pline" p20 fait_g p10 "")

 

(setq polyligne (entlast))

 

(setq x1 (list (+ (car p10) 100) (- (cadr p10) 1000)))

(setq x2 (list (- (car fait_g) 1) (cadr fait_g)))

 

(setvar "osmode" 0)

 

(command "_trim" polyligne "" "t" x1 x2 "" "")

 

(setvar "osmode" 1)

 

(setq fait_d (getpoint "\n cliquer sur le faitage droit"))

 

(command "_pline" p30 fait_d p40 "")

 

(setq polyligne (entlast))

 

(setq x3 (list (- (car p40) 100) (- (cadr p40) 1000)))

(setq x4 (list (+ (car fait_d) 1) (cadr fait_d)))

 

(setvar "osmode" 0)

 

(command "_trim" polyligne "" "t" x3 x4 "" "")

 

(setvar "osmode" 1)

 

;on ferme le contour

 

(command "_line" p40 p30 "")

(command "_line" p10 p20 "")

(command "_line" p20 p30 "")

(command "_line" p10 p40 "")

 

;on trace les fermettes de pignon

 

(setvar "osmode" 0)

 

(setq f1 (list (car p10) (cadr p_int)))

(setq f2 (list (+ (car f1) 100) (cadr p_int)))

 

(command "_line" f1 f2 "")

 

(setq fermette (entlast))

 

;definition de variable pour le reseau

(setq dd (distance p10 f1))

(setq d_res2 (/ (fix (- d1 (* 2 dd))) 625))

 

(command "reseau" fermette "" "r" (+ d_res2 2) 1 -625)

 

;selection pour extension

 

(setq capt1 (list (- (car fait_g) 1) (+ (cadr fait_g) 1)))

(setq capt2 (list (+ (car fait_g) 1) (- (cadr fait_g) 1)))

 

 

(setq capt (ssget "_c" capt1 capt2 (list (cons 8 "fermettes")))) ;la polyligne jusqu'à laquelle on prolonge

 

(setq x (list (+ (car p20) 75) (+ (cadr p20) 5)))

(setq xx (list (+ (car p10) 50) (- (cadr p10) 5)))

 

(setq e1 (ssget "_c" x xx (list (cons 8 "fermettes")))) ;les fermettes

 

(command "_extend" capt "" e1 "")

 

;selection pour symetrie fermette

 

(setq e1 (ssget "_c" x xx (list (cons 8 "fermettes"))))

 

(command "_mirror" e1 "" pvh pvb "n")

 

(command "_line" fait_g fait_d "")

 

;positionnement du texte

 

(setq p_text (list (+ (car p30) 500) (- (cadr p30) 1500)))

 

(command "texte" "s" "arial"

p_text

500 0 "Plan de fermettes")

 

;cotation fermette pignon

 

(command "_clayer" "fermettes_cot")

 

(setq p_intt2 (list (car p10) (cadr p_intt)))

(setq p_intt2c (list (- (car p10) 700) (cadr p_intt)))

 

(command "_dimlinear" p10 p_intt2 p_intt2c)

 

(setq cot (entlast))

 

(command "_mirror" cot "" fait_g fait_d "n")

 

(setq p_inttb (list (car p_intt2) (- (cadr p_intt2) 625)))

(setq p_inttbc (list (car p_intt2c) (cadr p_inttb)))

 

(command "_dimlinear" p_intt2 p_inttb p_inttbc)

 

(setq cot (entlast))

 

(command "reseau" cot "" "r" (+ d_res2 1) 1 -625)

 

(setvar "osmode" 679)

 

))

Lien vers le commentaire
Partager sur d’autres sites

cependant lorsque je lance la commande (command "_extend" capt "" e1 ""), je reçois deux messages:

- aucun seuil dans cette direction

-l'objet ne coupe pas une arête

 

à quoi cela peut être dû ?

 

La commande _extend outre la sélection à besoin de connaitre le/les point(s) de sélection pour savoir quelle extrémité est à prolonger.

 

Peut être avec la fonction (ssnamex) tu pourrais obtenir ces information de sélection de ton jeu "e1" si la sélection s'est faite par un mode approprié (capture, trajet....)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité