Aller au contenu

ASTERIXII

Membres
  • Compteur de contenus

    404
  • Inscription

  • Dernière visite

  • Jours gagnés

    1

Tout ce qui a été posté par ASTERIXII

  1. Aucun changement avec la saisie dynamique
  2. Bonjour, Une personne pourrait-elle me donner un explication sur (command "_text"... Voila mon cas: Je veux inserer un texte à l'ecran, avec la hauteur du fixée dans la commande: (command "_text" pause 150) <--- pause pour entrer le point d'insersion, et hauteur de 150 Je rajoute l'angle dans ma fonction (command "_text" pause 150 ang) <--- ajout de l'angle Sa fonctionne, mais la difference entre les 2 fonctions, c'est que dans le premier cas la frappe du texte est visible à l'ecran, mais dans le 2éme cas uniquement sur la ligne de commande Je voudrais toujours avoir la frappe du texte (visible) sur l'ecran. Une idée ?
  3. Bonjour, Je recherche un lisp, du type du Edit_bloc_rep de Gil, pour supprimer 1 ou 2 attributs dans des blocs (suivant le type de bloc), mais sans ouvrire chaque bloc. Une etiquette à toujours le même nom. (du type invisible) Pour l'autre elle peut avoir 4 noms differents (ex: CV SA CH) (du type invisible) Les 2 étiquettes ne sont pas toujours dans les blocs, et il y a d'autre étiquette (1 ou 2) à ne pas supprimer.
  4. ASTERIXII

    Essai sur Lumion 3

    Ne pas oublier de déclarer l'unitée dans autocad
  5. Merci Gile Je vais voir cela
  6. Bonjour, J'ai un probleme avec la fonction entsel: Voila, je selection une ligne avec entsel, je recupere le nom du calque et le point (x,y,z) cliqué sur la ligne avec (setq point (nth 1 sel)). Ensuite j'insere un bloc avec (command "_insert" nombloc point 1 1 ) Probleme, le bloc n'est pas inseré "pil-poil" sur la ligne, mais avec un décalage, pourquoi ? Cela semble dépendre du rectangle de selection. Faut-il modifier les accrochages ? Pour info: Pour le nom du bloc je passe par une bibliothéque POP du menu avec [CH_Vanne,CH_Vanne]^c^c(SNC_L5 "CH_Vanne") Code: ;************************ ; Equipement par selection ligne (defun SNC_L3 () (setq sel (entsel)) (setq entity (nth 0 sel)) (setq point (nth 1 sel)) (setq name (entget entity)) (setq SNC_CAL (cdr (assoc 8 name))) ; nom du calque (setq SNC_COUL (cdr (assoc 62 (entget (tblobjname "LAYER" SNC_CAL))))) ; couleur du calque (setq SNC_CAL (strcat SNC_CAL "_EQUIP")) ; calque equipement pour le réseau ; creation calque (if (= (tblsearch "layer" SNC_CAL) nil) (command "-calque" "n" SNC_CAL "co" SNC_COUL SNC_CAL "tl" "CONTINUOUS" SNC_CAL "ep" 0.2 SNC_CAL "ch" SNC_CAL "") ) ; bibliotheque (setq Lot "I=SNC1.CHA6") ;(menucmd Lot) (menucmd "I=SNC1.*") ; inserer bloc ;(command "_insert" nombloc point 1 1 ) ); fin defun ;***************** ; inserer bloc ; (defun SNC_L5 (nombloc) ; inserer bloc (command "_insert" nombloc point 1 1 ) )
  7. C'est bon, j'ai trouvé le probleme. J'ai modifieé le lisp, pour non plus "passer" une variable avec le nom du calque, mais la list. Question: comment clore le sujet ?
  8. Bonjour, Nota j'ai modifier tous le lisp + dcl , et je change de question J'ai récuperé un lisp + dcl, et je l'ai modifié (ne trouvant pas de réponse à mon probleme) Mais j'ai un nouveau probléme: il y a une erreur apres le lancement si je ne change rien à la selection de la liste1 et de la liste2 exemple: si je fais un choix dans la liste de droite uniquement,ensuite je valide, et j'ai une erreur Si ensuite je fais un choix à gauche dans la liste, la liste de droite change (c'est ok), ensuite je valide, et de nouveau erreur. Mais si au premier lancement, je fais un choix dans la liste de droite, puis dans celle de gauche, la aucun probleme. il me semble que le probleme vient de la: (action_tile "lst2" (strcat "(setq *Model* $value)" "(setq *Make* $value1)" "(setq tempo_index2 (atoi *Model*))" "(setq tempo_SNC_CAL (nth tempo_index2 lst2))"))] Code: (defun c:SNC_X (var_snc / *error* UpdateList data dclfile dclhandle ) ;; This program demonstrates how to update a secondary list_box based ;; on user selection from a primary list_box. ;; Example courtesy of Lee Mac © 2010 (www.lee-mac.com) ;; Accompanying DCL File: ;************************** (setq NAMES_COUL (list 1 2 3 4 5 6)) (setq NAMES_LIN (list "CACHE2" "CACHE2" "CACHE2" "CACHE2" "CACHE2" "CACHE2")) (setq NAMES_EP_L (list 2 2 2 2 2 2)) ; épaisseur pour ligne (setq NAMES_EP_T (list 1 1 1 1 1 1)) ; épaisseur pour texte (setq NAMES_EP_E (list 0.5 0.5 0.5 0.5 0.5 0.5)) ; épaisseur pour équipement ;************************* (setq dclFile "listboxexample.dcl") ;; Ensure this file resides in an AutoCAD Support Path (defun *error* ( msg ) ;; Error Handler - will unload the dialog ;; from memory should the user decide to hit Esc (if dclHandle (unload_dialog dclHandle)) (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*") (princ (strcat "\n** Error: " msg " **"))) (princ) ) (defun UpdateList ( key lst ) ;; This function updates the list_box associated with the specified key ;; using the contents of the supplied lst (start_list key) (mapcar 'add_list lst) (end_list) ) ;; Data used to Populate List_Boxes: ;; I've chosen to use this list structure because it suits the data, ;; but there are many other possibilities. (setq Data '( ("Ventilation" ("CV-451 Air neuf-un" "CV-452 Air soufflé-un" "CV-453 Air repris-un" "CV-454 Rejet d’air-un" "CV-455 VMC-un" "CV-456 Air extrait-un")) ("Plomberie" ("SA-610 Eau Froide-bi" "SA-620 Eau chaude-bi" "SA-625 Bouclage Eau chaude-bi" "SA-630 Eau mitigée-bi")) ) ) ;; Start of Main Routine ;; Lots of Error Trapping to make sure the Dialog Loads: (cond ( (<= (setq dclHandle (load_dialog dclFile)) 0) (princ "\n--> DCL File not Found.") ) ( (not (new_dialog "listboxexample" dclHandle)) (setq dclHandle (unload_dialog dclHandle)) (princ "\n--> Dialog Definition not Found.") ) ( t ;; Dialog Loaded Successfully. (or *Make* (setq *Make* "0")) (or *Model* (setq *Model* "0")) ;; Set up some default selections, for the first-time running of the program. ;; The variables *Make* & *Model* are intended to be global and hence will ;; remember the user's last selections. ;; Populate the List_Boxes: ;; List_Box 'lst1' (UpdateList "lst1" (mapcar 'car Data)) (set_tile "lst1" *Make*) ;; List_Box 'lst2' (UpdateList "lst2" (cadr (nth (atoi *Make*) Data))) (set_tile "lst2" *Model*) ;; Action_tile Statements: ;; These control what happens when the user interacts with a tile in the dialog. (action_tile "lst1" (strcat "(setq $value1 $value) (UpdateList \"lst2\" (setq lst2 (cadr (nth (atoi (setq *Make* $value)) Data))))" "(setq *Model*" " (set_tile \"lst2\"" " (if (< (atoi *Model*) (length lst2)) *Model* \"0\")" " )" ")" ) ) ;; Here, when the user selects an item from 'lst1', the UpdateList subfunction ;; is fired to update the items in list_box 'lst2'. ;; list_box 'lst2' is also set to the value of *Model* if the index is ;; available for the selected item, else the first item is selected. ;; Note that $value is a string containg the index of the item ;; that the user has selected. (action_tile "lst2" (strcat "(setq *Model* $value)" "(setq *Make* $value1)" "(setq tempo_index2 (atoi *Model*))" "(setq tempo_SNC_CAL (nth tempo_index2 lst2))")) ;; Dialog setup, lets start it: (start_dialog) (setq dclHandle (unload_dialog dclHandle)) ) ) ;****** ;(alert (strcat "la valeur est :" *Make* " " *Model*)) (setq SNC_CAL tempo_SNC_CAL) (setq index1 (atoi *Make*)) ; list Lot (setq index2 (atoi *Model*)) ; list Calque ;(setq SNC_CAL (nth index2 NAMES_CAL)) ;récupérer nom du calque dans liste (setq SNC_COUL (nth index2 NAMES_COUL)) ;récupérer couleur dans la liste ;var_snc = "L" pour ligne ;var_snc = "T" pour texte ;var_snc = "E" pour equipement ;**************** ; LIGNE / RESEAU ; (if (= var_snc "L") (progn (setq SNC_EP (nth index2 NAMES_EP_L)) ;récupérer épaisseur dans la liste pour ligne (setq SNC_LIN (nth index2 NAMES_LIN)) ; récupérer le type de ligne ; creation calque (if (= (tblsearch "layer" SNC_CAL) nil) ;création calque (command "-calque" "n" SNC_CAL "co" SNC_COUL SNC_CAL "tl" SNC_LIN SNC_CAL "ep" SNC_EP SNC_CAL "ch" SNC_CAL "") ) (command "_line") ); fin progn ); fin if ;**************** ; TEXTE ; (if (= var_snc "T") (progn (setq SNC_CAL (strcat SNC_CAL "_Texte")) (setq SNC_EP (nth index1 NAMES_EP_T)) ;récupérer épaisseur dans la liste pour texte (setq SNC_LIN "CONTINUOUS") ; fixe le type de ligne ; creation calque (if (= (tblsearch "layer" SNC_CAL) nil) ;création calque (command "-calque" "n" SNC_CAL "co" SNC_COUL SNC_CAL "tl" SNC_LIN SNC_CAL "ep" SNC_EP SNC_CAL "ch" SNC_CAL "") ) (command "_text") ); fin progn ); fin if ;**************** ;EQUIPEMENT ; (if (= var_snc "E") (progn (setq SNC_CAL (strcat SNC_CAL "_Equip")) (setq SNC_EP (nth index1 NAMES_EP_E)) ;récupérer épaisseur dans la liste pour equipement (setq SNC_LIN "CONTINUOUS") ; fixe le type de ligne ; creation calque (if (= (tblsearch "layer" SNC_CAL) nil) ;création calque (command "-calque" "n" SNC_CAL "co" SNC_COUL SNC_CAL "tl" SNC_LIN SNC_CAL "ep" SNC_EP SNC_CAL "ch" SNC_CAL "") ) ; lancement icon ; Gestion des lot cv fm .... ; (setq Lot "I=SNC1.CVC1") (menucmd Lot) ;(menucmd "I=SNC1.CVC1") (menucmd "I=SNC1.*") ); fin progn ); fin if ;********** (princ) ); defun Boite DCL: // DCL File to be saved as listboxexample.dcl // Example courtesy of Lee Mac © 2010 (www.lee-mac.com) lbox : list_box { width = 25; fixed_width = true; alignment = centered; } listboxexample : dialog { label ="List Box Synchronisation"; spacer; : row { : lbox { key = "lst1"; label = "Make" ; } : lbox { key = "lst2"; label = "Model"; } } ok_only; }
  9. Encore merci bruno, la c'est parfait ! :D
  10. Oups ! Il reste un probleme, dans le cas de polyligne avec une épaisseur. Apres le "raccord" la polyligne perd son épaisseur. Vois l'image. (Lili, c'est pas des lignes double, c'est pour l'exmeple avant / apres)
  11. Ok, je vais proposer qque chose
  12. Merci Bruno :D , ton lisp fonctionne Merci aussi Bonuscad pour le cette option, que je connaissais pas, mais elle ne marche pas bien. Car il n'y a pas une jonction entre les polylignes, ou pas d'ajustement selon la distance qui separe la polyligne à celle qu'il faut "raccorder" Je joint une capture plus parlante Derniere question sur les polylignes, il exite pas une variable pour qu'au tracé les polylignes ne soit pas jointe ? (il me semble que oui, mais ne retrouve pas) Mais merci à tous.
  13. Merci pour ta réponse, mais j'ai toujours le même probléme qu'avec la fonction raccord (la ligne perpandiculaire est coupée)
  14. Patrick, Donc ma list A sera du type '((CV-400 bi 1 2 3) (CV-400 un 4 5 6) (CV-200 bi 1 3 2)) "CV-400" étant le début du calque et "bi" la fin Pour 258 calques (je viens de recompter) c'est pas trop lourd à gerer ? Un fichier en lecture n'est pas mieux ? Et pour les calques du plan, c'est mieux de boucler un par un ou de faire une liste et ensuite le traitement ?
  15. Le but est de ne pas utiliser la commande chanfrein, car au niveau de la jonction, elle coupe la polyligne qui lui est perpandiculaire. (supprime une partie) Ou il existe une option ? sur chanfrein et les polylignes Bruno, le lisp ne tourne pas chez moi (MEP 2012), mais visiblement tu utilise la commande chanfrein, donc sa ne marchera pas.
  16. Non pas que les épaisseurs... d'ailleur je rajoute une info, la fin du nom du calque est -un ou -bi Ex: CV-400....-un à traiter CV-400....-bi à ne pas traiter, ou conserver la valeur
  17. J’ai un problème à vous soumettre, et j’aurais besoin de vos conseils : (En lisp basic ) J’ai 150 calques avec des épaisseurs de ligne différente, mais j’ai 4 ou 5 épaisseurs différentes au total suivant le type de calque (réseau, texte, équipement….) Exemple du début du nom des calques : CV-400.. , CV-410.., PB-100.., PB-200…, FM-300 ect…. L’épaisseur n’a aucun rapport avec le nom du calque. Je voudrais modifier l’épaisseur des calques en fonction d’une échelle que je vais déclarer dans une boite de dialogue au moment de mon changement d’épaisseur de ligne. Comment optimiser le lisp ? - Je fais une liste A (ou plusieurs listes ?) avec le début du nom des calques (CV-400) suivie de 3 épaisseurs de ligne pour le calque suivant l’échelle voulue (exemple cv-400 , 0.2 ,0.6 , 1 , cv-410 , 0.1 , 0.3 , 0.8 …..) - Je fais une liste B avec les calques existant dans le plan ? ou il est préférable de les prendre 1 par 1 au cours de traitement ? - Je fais une boucle sur la liste B, récupère les 6 premiers caractères, et fais une recherche de position dans la liste A, récupère le chiffre en position 1,2 ou 3 suivant l’échelle demandée - Applique au calque de la liste B la nouvelle épaisseur - Boucle sur les calques une autre info la fin du nom du calque est -un ou -bi Ex: CV-400....-un à traiter CV-400....-bi à ne pas traiter, ou conserver la valeur Pour pouvoir modifier facilement les données (ajout d’un calque, modification d’une épaisseur, ou ajout d’une échelle (et par tous) n’est-il pas préférable d’avoir les liste A et B dans des fichiers texte ?
  18. Non, les polylignes ne sont pas jointes, mais perpendiculaire
  19. Bonjour, Je pensais mon problème simple, mais je n'ai pas trouvé de réponse. Alors voila, j'ai 2 polylignes perpandiculaire, et je veux dessiner une nouvelle polyligne depuis l'extremité de celle perpendiculaire vers l'autre, mais à 45° Donc la nouvelle commence à l'extremité, et finie sur un point de l'autre avec un angle de 45° avec elle. Plus compliqué, reprendre la polyligne (prolonger) et faire la même chose mais avec un écart de 10 (exemple) comme avec la fonction raccord. Je sais le faire sur AutoCAD avec le repérage polaire, mais je voudrais trouver une fonction plus rapide en lisp
  20. En fait je ne parle pas que du toit, mais faite l'essaye avec un objet de couleur (rouge) vive face a votre objet en inox (de préférence un tube, pas une plaque). Placer vous de coté, ou entre les 2 objets, la camera vers l'objet inox. Le reflet n'est pas juste, voir inexistant ! La lumiere du jour a un gros effet sur le resultat (faire un essai de nuit), et également la reflexion des murs
  21. la priorité des matières ?? c'est quoi sa (débutant sur lumion)
  22. J'ai deja un "objet" reflexion dans la scene. Mais faut t'il faire qque chose de particulier avec cet objet ? (hauteur, taille)
  23. Reflet dans lumion Voila mon problème, à l’intérieur d’un bâtiment, lumion me reflet le ciel, les nuages, le soleil sur ma conduite (inox), alors qu’il y a bien des murs et un toit ! (pas de vitre) Problème avec les matériaux ? Ci-joint un exemple
  24. Merci sa marche ! :) c'est quoi le truc ? c'est R ou X qui fait la difference ? (je vais chercher) Ok c'est bon c'est R et U Il faut juste remplacer les R=0 par U=0.0 Voila nos 2 lignes (avant) *NewEU,EU ----EU----EU----EU----EU----EU----EU-- A,12.7,-5.08,["EU",STANDARD,S=2.54,U=0.0,X=-2.54,Y=-1.27],-6.35 *CAD_EU_REFOULEMENT,Eau usée Refoulement --------EU REF--------EU REF--------EU REF-- A,55.88,-5.08,["EU REF",standard,S=6.35,R=0,Y=-3.175],-55
  25. Bonjour, Voila mon problème, lorsque je dessine des polylignes avec du texte dans le sens des x négatif le texte est à l’envers. Manuellement il faut retourner la polyligne en son milieu pour avoir le texte dans le bon sens. Ma question : Est-il possible par un lisp de modifier le sens, mais avec un filtre sur les calques et sur le type de ligne ? (avec un choix sur l’axe x ou y) Uniquement les calques débutant par CV_ et SA_ et les types de ligne débutant par CAD_ Autocad Mep 2012
×
×
  • 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é