baberise Posté(e) le 2 septembre 2008 Posté(e) le 2 septembre 2008 bonjour à tous, J'aimerais savoir si quelqu'un pourrai m'expliquer comment donner des propriétées à un bloc par rapport à son point d'insertion.Je m'explique:En faite je voudrais que quand j'insert mon bloc, et que celui ci se trouve dans ma polylignes celui si hérite des propriétés du calque de cette zone et si il est hors de la polylignes celui ci hériter des propriétés du calques hors zones.J'espère mettre fait comprendre Merci, d'avance[Edité le 2/9/2008 par baberise][Edité le 3/9/2008 par baberise]Voici un exemple j'espere qu'il sera compréhensif http://keepi.free.fr/12204366414.jpeg[Edité le 3/9/2008 par baberise][Edité le 3/9/2008 par baberise][Edité le 3/9/2008 par baberise][Edité le 3/9/2008 par baberise] [Edité le 3/9/2008 par baberise]
yw22 Posté(e) le 2 septembre 2008 Posté(e) le 2 septembre 2008 Bonjour baberise, Va voir sur ce post, réponse 4, tu trouveras comment joindre une image à tes messages. http://www.cadxp.com/sujetXForum-20161.htm Cordialement yw22
baberise Posté(e) le 3 septembre 2008 Auteur Posté(e) le 3 septembre 2008 Merci yw22, je vais le faire
bonuscad Posté(e) le 3 septembre 2008 Posté(e) le 3 septembre 2008 Bonjour, Essayes ce qui suit directement en ligne de commande, pour voir si c'est vraiment ce que tu attends et si ça fonctionne. ((lambda ( / e_last pt_ins dxf_ent js dxf_blk) (command "_.insert" (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) (setq e_last (entlast) pt_ins (getvar "LASTPOINT") ) (command "_.-boundary" "_advanced" "_boundary" "_new" (ssget "_X" '((0 . "LWPOLYLINE"))) "" "_object" "_polyline" "" pt_ins "") (if (not (eq (entlast) e_last)) (progn (setq dxf_ent (entget (entlast))) (setq js (ssget "_F" (mapcar '(lambda (x) (trans x 0 1)) (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_ent))) '((0 . "LWPOLYLINE")))) (ssdel (entlast) js) (entdel (entlast)) (setq dxf_ent (entget (ssname js 0)) dxf_blk (entget e_last)) (entmod (subst (assoc 8 dxf_ent) (assoc 8 dxf_blk) dxf_blk)) ) ) (prin1) )) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
baberise Posté(e) le 4 septembre 2008 Auteur Posté(e) le 4 septembre 2008 Merci Bonuscad,mais je ne comprend pas trop comment je fais pour utiliser ton ptit programme.Est ce que je dois le charger en t'en que lisp, est ce que je dois modifier certaine ligne par rapport a ma config de bloc?[Edité le 4/9/2008 par baberise] En faite c bon j'ai reussi a executer ta ligne de commande, et c'est presque se que je voulais.Le probleme c'est qu'il faut lancer cette ligne apres chaque insertion or moi j'ai plusieur bloc deja inserer de nom different avec plusieurs polylignes (c vrai je ne l'avez pas dit au debut dsl)grosso modo voici mon projet j'ai 3 calques: zc1; zf1; zf2 qui ont chacun une polyligne a leur noms (les propriétés de cette polyligne ne doivent pas bouger) ensuite viens mes blocs qui eux sont implanter un peux partout.http://keepi.free.fr/12205198278.jpeg [Edité le 4/9/2008 par baberise]
lili2006 Posté(e) le 4 septembre 2008 Posté(e) le 4 septembre 2008 Bonjour à toutes et tous, Essayes ce qui suit directement en ligne de commande , Tu copie-colle directement le code de bonuscad en ligne de commande,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Patrick_35 Posté(e) le 4 septembre 2008 Posté(e) le 4 septembre 2008 Bonjour Pour faire bien, il faudrait jouer avec les réacteurs.Je n'ai pas le temps et si le coeur en dit à quelqu'un, c'est l'occasion ou jamais. Sinon, je me suis fais il y a quelques temps ce petit bout de lisp qui rend courant le calque, couleur, epaisseur, etc... depuis un objet sélectionné à l'écran.Même le style de cote, de texte est repris. ;;;================================================================= ;;; ;;; DEF V1.00 ;;; ;;; Mettre par défaut les couleurs, calques, etc... depuis une entité ;;; ;;; Copyright (C) Patrick_35 ;;; ;;;================================================================= (defun c:def(/ doc ent) (if (setq ent (entsel)) (progn (setq ent (entget (car ent)) doc (vla-get-activedocument (vlax-get-acad-object)) ) (vla-startundomark doc) (setvar "clayer" (cdr (assoc 8 ent))) (if (cdr (assoc 6 ent)) (setvar "celtype" (cdr (assoc 6 ent))) (setvar "celtype" "bylayer") ) (if (cdr (assoc 62 ent)) (setvar "cecolor" (itoa (cdr (assoc 62 ent)))) (setvar "cecolor" "bylayer") ) (if (cdr (assoc 370 ent)) (setvar "celweight" (cdr (assoc 370 ent))) (setvar "celweight" -1) ) (and (eq (cdr (assoc 0 ent)) "DIMENSION") (vla-put-activedimstyle doc (vla-item (vla-get-dimstyles doc) (cdr (assoc 3 ent)))) ) (and (vl-string-search "TEXT" (cdr (assoc 0 ent))) (vla-put-activetextstyle doc (vla-item (vla-get-textstyles doc) (cdr (assoc 7 ent)))) ) (vla-endundomark doc) (princ "\nValeurs par défauts du dessin reprises depuis l'objet sélectionné.") ) ) (princ) ) (setq nom_lisp "DEF") (if (/= app nil) (if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp) (princ (strcat "..." nom_lisp " chargé.")) (princ (strcat "\n" nom_lisp ".LSP Chargé.....Tapez " nom_lisp " pour l'éxecuter."))) (princ (strcat "\n" nom_lisp ".LSP Chargé......Tapez " nom_lisp " pour l'éxecuter."))) (setq nom_lisp nil) (princ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
baberise Posté(e) le 4 septembre 2008 Auteur Posté(e) le 4 septembre 2008 Pour faire bien, il faudrait jouer avec les réacteurs.Merci, Patrick mais qu'entend tu par réacteurs, c'est la premiere fois que j'entend se termes sur autocad.
Patrick_35 Posté(e) le 4 septembre 2008 Posté(e) le 4 septembre 2008 C'est intercepter un évènement pour y inclure sa propre action.Pour ton besoin, d'intervenir avant la fin de la commande d'insertion pour détecter si ton bloc est dans la poly afin de prendre ses propriétés pour les appliquer au bloc en cours d'insertion, sinon, laisser celles par défaut. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
baberise Posté(e) le 5 septembre 2008 Auteur Posté(e) le 5 septembre 2008 Encore merci patrick, J'ai voulu essayer ton petit programme mais je n'arrive pas a l'utiliser, lorsque je le lance il me demande de selectionner un objet et apres plus rien.
bonuscad Posté(e) le 5 septembre 2008 Posté(e) le 5 septembre 2008 j'ai plusieurs blocs [surligneur]déjà[/surligneur] inserés de nom différent, avec plusieurs polylignes Dans le titre du sujet c'était "lors de son insertion" :casstet: 3 calques: zc1; zf1; zf2 qui ont chacun une polyligne Donc avec ces infos supplémentaires, ceci devrait suffire (defun c:ins_change ( / js n dxf_bound js_obj nb dxf_ent) (setq js (ssget "_X" '((0 . "LWPOLYLINE") (8 . "zc1,zf1,zf2"))) n -1) (cond (js (repeat (sslength js) (setq dxf_bound (entget (setq name_bound (ssname js (setq n (1+ n)))))) (setq js_obj (ssget "_CP" (mapcar '(lambda (x) (trans x 0 1)) (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_bound))) '((0 . "INSERT")))) (ssdel name_bound js_obj) (cond (js_obj (setq nb -1) (repeat (sslength js_obj) (setq dxf_ent (entget (ssname js_obj (setq nb (1+ nb))))) (entmod (subst (assoc 8 dxf_bound) (assoc 8 dxf_ent) dxf_ent)) ) ) ) ) ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
baberise Posté(e) le 5 septembre 2008 Auteur Posté(e) le 5 septembre 2008 Merci bonuscad, ton lisp commence a ressembler a se que je recherche, Mais il y a toujours un ptit probleme.Je m'explique dans mon 2eme exemple mon rectangle ZC1 englobe ZF1 & ZF2 en utilisant ton lisp celui-ci ne prend pas en compte ZF1 & ZF2, en gros si mon bloc est dans ZF1 il prend les propriétés de ZC1 alors que moi je voudrais qu'il prenne les propriété de ZF1. Idem pour le cas avec ZF2. Encore merci,
Patrick_35 Posté(e) le 5 septembre 2008 Posté(e) le 5 septembre 2008 Salut Même remarque que Bonus. Pour l'utilisation du lisp que j'ai donné, tu le lances, choisis la poly, les valeurs par défauts changent et tu fais tes insertions. ps : c'est pour de l'incendie ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
baberise Posté(e) le 5 septembre 2008 Auteur Posté(e) le 5 septembre 2008 Oui patrick comment l'a tu su
bonuscad Posté(e) le 5 septembre 2008 Posté(e) le 5 septembre 2008 Avec une légère modif, comme ceci (emploi de foreach avec une liste pour ordre de priorité): (defun c:ins_change ( / js n dxf_bound js_obj nb dxf_ent) (foreach el '("zc1" "zf1" "zf2") (setq js (ssget "_X" (list '(0 . "LWPOLYLINE") (cons 8 el))) n -1) (cond (js (repeat (sslength js) (setq dxf_bound (entget (setq name_bound (ssname js (setq n (1+ n)))))) (setq js_obj (ssget "_CP" (mapcar '(lambda (x) (trans x 0 1)) (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_bound))) '((0 . "INSERT")))) (ssdel name_bound js_obj) (cond (js_obj (setq nb -1) (repeat (sslength js_obj) (setq dxf_ent (entget (ssname js_obj (setq nb (1+ nb))))) (entmod (subst (assoc 8 dxf_bound) (assoc 8 dxf_ent) dxf_ent)) ) ) ) ) ) ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
phil_vsd Posté(e) le 5 septembre 2008 Posté(e) le 5 septembre 2008 Hello, J'ai lu rapidement ce post. Une fosi dans un lisp, pour savoir si un objet est dans un polyligne, (Gile) faisait partir une demie-droite de cet objet, si elle interceptait une fois la polyligne en question, cela voulais dire que le point de départ est dans le périmètre de la polyligne, s'il coupe deux fois ou zéro, il est à l'extérieur. Si je retrouve le post je vous le donne. "La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.
baberise Posté(e) le 5 septembre 2008 Auteur Posté(e) le 5 septembre 2008 Nickel Bonuscad c'est se que je voulais, je n'ai pas encore bien compris les raissonement de ton lisp mais le principale c'est qu'il fonctionne de la manière que je voulais.Merci, encore
baberise Posté(e) le 5 septembre 2008 Auteur Posté(e) le 5 septembre 2008 Petite rectifie ton lisp etait tellement bien pour moi qu'il a fallu que mon responsable me demande plus, j'explique le cas: En faite il faudrait que dans le lisp celui-ci n'ai pas de calque figer dans la ligne (foreach el '("zc" "zf1" "zf2")car au niveau des calques ZF la numérotation peux varier en gros de 0à999(voir aussi les calques ZC mais pour cela on les oublient).De plus il me demande si cela est possible que lorsque mon bloc se situe dans le calque ZC on y ajout un texte du style "mettre dans VTP" a coté du bloc concerné. Et pour finir il faudrait que j'impose le bloc concerné à la commande par exemple "MDNA". Encore merci pour toutes vos infos. PS: y a t il un moyen pour lancer la commande du lisp au moment d'un enregistrement ou d'une fermeture. [Edité le 5/9/2008 par baberise]
Patrick_35 Posté(e) le 5 septembre 2008 Posté(e) le 5 septembre 2008 Re Oui patrick comment l'a tu suIl m'arrive d'en faire. (foreach el '("zc" "zf1" "zf2")A condition que tes calques commencent par ZC et ZF, remplace par(foreach el '("zc*" "zf*") De plus il me demande si cela est possible que lorsque mon bloc se situe dans le calque ZC on y ajout un texte du style "mettre dans VTP" a coté du bloc concernéTout est possible en lisp. Je sais qu'on peut ajouter des annotations. Et pour finir il faudrait que j'impose le bloc concerné à la commande par exemple "MDNA".C'est à dire ? PS: y a t il un moyen pour lancer la commande du lisp au moment d'un enregistrement ou d'une fermeture.Regarde ici @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 5 septembre 2008 Posté(e) le 5 septembre 2008 il a fallu que mon responsable me demande plus Ben moi aussi je vais demander plus (volontier un p'tit chèque) :D Profites-en pour te faire payer une initiation/formation au lisp, maintenant qu'il perçoit les avantages de petits développements. Si tu sais bien argumenter, il va vite saisir l'avantage que tu sois formé. Fonces !!! T'as tout à gagner aussi, des atouts à négocier dans le futur. Heu! moi, j'ai rien à gagner :( Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
baberise Posté(e) le 8 septembre 2008 Auteur Posté(e) le 8 septembre 2008 Merci, Bonuscad & patrick, vous information mon été très utile, Ben moi aussi je vais demander plus (volontier un p'tit chèque) Profites-en pour te faire payer une initiation/formation au lisp, maintenant qu'il perçoit les avantages de petits développements. Si tu sais bien argumenter, il va vite saisir l'avantage que tu sois formé. Fonces !!! T'as tout à gagner aussi, des atouts à négocier dans le futur. Heu! moi, j'ai rien à gagner c'est vrai que tu as raison mais je suis nouveaux dans ma boite et je ne peux pas me permettre de demander des formation comme sa, il faut déja que je m'impose dans le BE et ensuite je m'y pencherai.Encore merci Bonuscad
lesourd2 Posté(e) le 8 septembre 2008 Posté(e) le 8 septembre 2008 Salut à tous Pour info ZC : zone de compartimentage.ZF : zone de desenfumage.VTP : Volume Technique ProtégéMDNA : Module Déporté Non Adressable ( sur ANTARES 2). @+
baberise Posté(e) le 9 septembre 2008 Auteur Posté(e) le 9 septembre 2008 ZC : zone de compartimentage.ZF : zone de desenfumage.VTP : Volume Technique ProtégéMDNA : Module Déporté Non Adressable ( sur ANTARES 2). :exclam: un gars de chez DEF.
lesourd2 Posté(e) le 9 septembre 2008 Posté(e) le 9 septembre 2008 Salut un gars de chez DEF ????? Un gars qui connait bien DEF......... [Edité le 9/9/2008 par lesourd2] [Edité le 9/9/2008 par lesourd2]
baberise Posté(e) le 16 septembre 2008 Auteur Posté(e) le 16 septembre 2008 bonjour à tous, j'essaye de comprendre le lisp mais je n'y arrive pas, serait il possible de me commenter les lignes de se lisp cela pourra peut etre m'aider pour y ajouter ma petite touche pour les fonctions que je veux rajouter merci (defun c:ins_change ( / js n dxf_bound js_obj nb dxf_ent)(foreach el '("zc1" "zf1" "zf2")(setq js (ssget "_X" (list '(0 . "LWPOLYLINE") (cons 8 el))) n -1)(cond(js(repeat (sslength js)(setq dxf_bound (entget (setq name_bound (ssname js (setq n (1+ n))))))(setq js_obj (ssget "_CP" (mapcar '(lambda (x) (trans x 0 1)) (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_bound))) '((0 . "INSERT"))))(ssdel name_bound js_obj)(cond(js_obj(setq nb -1)(repeat (sslength js_obj)(setq dxf_ent (entget (ssname js_obj (setq nb (1+ nb)))))(entmod (subst (assoc 8 dxf_bound) (assoc 8 dxf_ent) dxf_ent)))))))))(prin1)) [Edité le 16/9/2008 par baberise]
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant