Aller au contenu

fabcad

Membres
  • Compteur de contenus

    877
  • Inscription

  • Dernière visite

  • Jours gagnés

    8

Tout ce qui a été posté par fabcad

  1. fabcad

    Extension pour AutoLISP

    Merci Patrick, Je l'avais dézippé mais il faut aussi avec un clic droit-propriétés cliquer sur l'option Débloquer. Je ne connaissais pas cette option. Bonne journée,
  2. fabcad

    Extension pour AutoLISP

    Bonjour à tous, Merci pour cette extension, j'ai juste une question. Comment lire le fichier chm sous windows, l'application se lance avec l'ouverture du fichier mais les rubriques ne sont pas là. Avez-vous ce phénomène ? Fabcad
  3. fabcad

    DynPlineCreator

    Bonjour à tous, Dans mon nouveau travail, je dois créer souvent des polylignes en prenant référence sur une base. Il est vrai que les fonctions comme contour, ncopy dépannent, afin d'éviter ces fonctions, je souhaiterais créer une fonction nommée DynPlineCreator pour dessiner une polyligne par rapport à d'autres objets. Voici l’algorithme que j'ai pondu : 1- Sélection d'une ligne ou d'une polyligne (en direct-live, sur une Xref ou un bloc) => Pas de problème (entsel ou nentsel). 2- Sélection d'un point de départ sur l'objet sélectionné => Pas de problème (getpoint). 3- Saisie dynamique des points => Problème : Comment faire pour que la création de la polyligne se fasse de façon dynamique juste en déplaçant la "souris". Mon autre souci c'est d'avoir à tout moment le choix entre les trois options suivantes : - option 1 : Changer d'objet. - option 2 : Continuer la saisie par les extrémités/sommets de la ligne ou de la polyligne. - option 3 : Saisie libre d'un point sur les segments de l'objet (en utilisant les accrochages objets conventionnels AutoCAD). Merci d'avance.
  4. Bonjour à tous, Voici mon 1er jet de la routine d'insertion du bloc "viewport", j'ai du ajouter un command resol car la routine active la résolution. La routine fonctionee sur AutoCAD MAP 2007 mais je souhaiterais la rendre plus opérationnelle par d'autres utilisateurs. De l'aide serait la bienvenue. (defun C:insert_bloc_viewport (/ calque calque_vl centre centre_vl hauteur hauteur_vl longueur longueur_vl objet_acad_viewport objet_vl_viewport ss_viewport ) (vl-load-com) (setq block "viewport") (foreach layout (layoutlist) (command "presentation" "Etablir" layout) (command "espacep") (command "resol" "in") ;select viewport boundary (setq ss_viewport (ssget (list '(0 . "VIEWPORT")))) (setq objet_acad_viewport (entget (ssname ss_viewport 0))) (setq objet_vl_viewport (vlax-ename->vla-object (ssname ss_viewport 0))) ;Get Viewport height with (setq hauteur (cdr (assoc 41 objet_acad_viewport))) ;Get Viewport width with (setq longueur (cdr (assoc 40 objet_acad_viewport))) ;Get Viewport Number (setq centre (cdr (assoc 10 objet_acad_viewport))) ;Get Viewport Calque (setq calque (cdr (assoc 8 objet_acad_viewport))) ;Get Viewport height with (setq hauteur_vl (vla-get-height objet_vl_viewport)) ;Get Viewport width with (setq longueur_vl (vla-get-width objet_vl_viewport)) ;Get Viewport Centre ;(setq centre_vl (vla-get-center objet_vl_viewport)) ;(setq pointlist (vlax-3d-point centre_vl) ;Get Viewport Calque (setq calque_vl (vla-get-layer objet_vl_viewport)) (command "_.insert" block centre longueur hauteur "0") (command "_chspace" (entlast) "") (setq objet_vl_bloc_viewport (vlax-ename->vla-object (entlast))) (setq calque_bloc (strcat "print_zone-" (getvar "CTAB"))) (if (not (tblobjname "LAYER" calque_bloc)) (vla-add (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) calque_bloc) ) (vla-put-layer objet_vl_bloc_viewport calque_bloc) (command "espacep") );fin foreach (princ) );fin defun
  5. Voici mon premier jet pour insérer un bloc viewport par rapport à une viewport d'une layout et de l'envoyer dans l'espace modele. (defun C:insert_bloc_viewport (/ calque calque_vl centre centre_vl hauteur hauteur_vl longueur longueur_vl objet_acad_viewport objet_vl_viewport ss_viewport ) (vl-load-com) (setq block "viewport") (foreach layout (layoutlist) (command "presentation" "Etablir" layout) (command "espacep") (command "resol" "in") ;select viewport boundary (setq ss_viewport (ssget (list '(0 . "VIEWPORT")))) (setq objet_acad_viewport (entget (ssname ss_viewport 0))) (setq objet_vl_viewport (vlax-ename->vla-object (ssname ss_viewport 0))) ;Get Viewport height with (setq hauteur (cdr (assoc 41 objet_acad_viewport))) ;Get Viewport width with (setq longueur (cdr (assoc 40 objet_acad_viewport))) ;Get Viewport Number (setq centre (cdr (assoc 10 objet_acad_viewport))) ;Get Viewport Calque (setq calque (cdr (assoc 8 objet_acad_viewport))) ;Get Viewport height with (setq hauteur_vl (vla-get-height objet_vl_viewport)) ;Get Viewport width with (setq longueur_vl (vla-get-width objet_vl_viewport)) ;Get Viewport Centre ;(setq centre_vl (vla-get-center objet_vl_viewport)) ;(setq pointlist (vlax-3d-point centre_vl) ;Get Viewport Calque (setq calque_vl (vla-get-layer objet_vl_viewport)) (command "_.insert" block centre longueur hauteur "0") (command "_chspace" (entlast) "") (setq objet_vl_bloc_viewport (vlax-ename->vla-object (entlast))) (setq calque_bloc (strcat "print_zone-" (getvar "CTAB"))) (if (not (tblobjname "LAYER" calque_bloc)) (vla-add (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) calque_bloc) ) (vla-put-layer objet_vl_bloc_viewport calque_bloc) (command "espacep") );fin foreach (princ) );fin defun
  6. fabcad

    migration L93 viewport perdu

    Bonjour à toutes et tous, Sur le gabarit des Atlas, j'ai essayé aussi mais sans résultat même en jouant sur un scu dans le gabarit. AutoDESK joue un peu la sourde oreille sur cet outil, il y aussi l'impossibilité d'utiliser des fenêtres polygonales. A bientôt,
  7. Propriétés d'une viewport et insertion de bloc. Pour avancer dans la requete de M. Pelloux : http://cadxp.com/ind...netresviewport/ car ces routines m'intéressent aussi. Je souhaiterais savoir comment récupérer le point centre, la hauteur et la largeur d'une viewport rectangulaire ou polygonale et d'affecter ces paramètres lors de l'insertion d'un bloc viewport composé d'un rectangle de 1x1 unités sur une layout d'un dwg pour ensuite le modifier d'espace (layout vers espace objet-Model) en visualisp ou en autolisp ou en mix. Merci d'avance, Fabcad
  8. Bonsoir à tous, Je suis intéressé aussi par ces routines surtout lorsque nous devons gérer des passerelles entre de la DAO et les SIG. Pour nos programmeurs les plus expérimentés, on peut remplacer la partie xdatas par un bloc rectangulaire de 1x1unités (point d'insertion au centre du rectangle) et d'insérer ce dernier au centre de chaque viewport de chaque layout et prendre la hauteur et largeur de chaque viewport afin de modifier le bloc en facteur d'échelle X et Y. Une 1ère routine : - Dans chaque layout, insertion du bloc "relai" (si plus de deux viewport, prendre la plus grande) - Mettre sous un calque concaténé : "zones-impressions+nom de la layout" ce bloc "relai". - Modifier ce bloc "relai" d’espace layout à l’espace objet comme avec la fonction "_chspace". Une 2ième routine : Sur toutes les Layouts d’un dwg, re-zoomer dans chaque viewport à l'aide des blocs "relais". - Sélectionner toutes les blocs "relais" des calques commencant par "zones-impressions". - Récupérer le nom de la layout grâce au suffixe du calque du bloc relai pour aller sur la bonne layout (si inexistante arrêter la fonction). - Aller sur la layout associée afin de zoomer par rapport au bloc relai en sélectionnant la viewport concernée. 1- Centre de la viewport = point d'insertion du bloc 2- zoom fenêtre sur les deux points bas gauche et haut droit du bloc.
  9. fabcad

    migration L93 viewport perdu

    Apres un test avec autocad map 2007, il manquerais la sous-fonction TabOrder. Voici le code avec TabOrder de Gile ;; TabOrder (gile) ;; Retourne le numéro d'ordre de la présentation ;; ;; Argument : le nom de la présentation (chaîne) ;; ;; Retour : le numéro d'ordre de la présentation (entier) (defun TabOrder (name / dict lay) (setq dict (dictsearch (namedobjdict) "ACAD_LAYOUT")) (if (setq lay (cdr (assoc 350 (member (cons 3 name) dict)))) (cdr (assoc 71 (entget lay))) ) ) ;; STR2LST ;; Transforme un chaine avec séparateur en liste de chaines ;; ;; Arguments ;; str : la chaine à transformer en liste ;; sep : le séparateur ;; ;; Exemples ;; (str2lst "a b c" " ") -> ("a" "b" "c") ;; (str2lst "1,2,3" ",") -> ("1" "2" "3") ;; (mapcar 'read (str2lst "1,2,3" ",")) -> (1 2 3) (defun str2lst (str sep / pos) (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) ;;; AUTOPAN par GC - 2009/06 ;;; Effectue le panoramique spécfié par deux points ou un déplacement ;;; dans toutes les fenêtres des présentations sélectionnées (defun c:autopan (/ *error* p1 p2 acdoc layouts ctab vplst vp lock) (vl-load-com) (defun *error* (msg) (or (= msg "Fonction annulée") (princ (strcat "\nErreur: " msg)) ) (and ctab (vla-put-ActiveLayout acdoc ctab)) (princ) ) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (while (null (setq p1 (getpoint "\nSpécifiez le point de base ou dépalcement: " ) ) ) (princ "\nNécessite deux points ou un déplacement suivi de ENTREE." ) ) (if (null (setq p2 (getpoint "\nSpécifiez le deuxième point: " ) ) ) (setq p2 p1) (setq p2 (mapcar '- p2 p1)) ) (setq layouts (vla-get-Layouts acdoc) ctab (vla-get-ActiveLayout acdoc) ) (foreach l (getlayouts "Présentations à traiter" T) (setq vplst nil) (vlax-for obj (vla-get-Block (vla-item layouts l)) (if (= (vla-get-ObjectName obj) "AcDbViewport") (setq vplst (cons obj vplst)) ) ) (while (cdr vplst) (setq vp (car vplst) vplst (cdr vplst) lock nil ) (if (= (vla-get-DisplayLocked vp) :vlax-true) (progn (vla-put-DisplayLocked vp :vlax-false) (setq lock T) ) ) (vla-put-ActiveLayout acdoc (vla-item layouts l)) (vla-put-MSpace acdoc :vlax-true) (vla-put-ActivePViewport acdoc vp) (vla-put-Target vp (vlax-3d-point (mapcar '- (vlax-safearray->list (vlax-variant-value (vla-get-Target vp)) ) p2 ) ) ) (vla-put-MSpace acdoc :vlax-false) (if lock (vla-put-DisplayLocked vp :vlax-true) ) ) ) (vla-put-ActiveLayout acdoc ctab) (princ) ) ;; GETLAYOUTS par GC - 03/12/07 ;; Retourne la liste des présentations choisies dans la boite de dialogue ;; ;; arguments ;; titre : titre de la boite de dialogue ou nil, défauts = Choisir la (ou les) présentation(s) ;; mult : T ou nil (pour choix multiple ou unique) (defun GetLayouts (titre mult / lay tmp file ret) (setq lay (vl-sort (layoutlist) (function (lambda (x1 x2) (< (TabOrder x1) (TabOrder x2) ) ) ) ) tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (write-line (strcat "GetLayouts:dialog{label=" (if titre (vl-prin1-to-string titre) (if mult "\"Choisir les présentations\"" "\"Choisir une présentation\"" ) ) ";:list_box{key=\"lst\";multiple_select=" (if mult "true;}:row{:retirement_button{label=\"Toutes\";key=\"all\";} ok_button;cancel_button;}}" "false;}ok_cancel;}" ) ) file ) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "GetLayouts" dcl_id)) (exit) ) (start_list "lst") (mapcar 'add_list lay) (end_list) (action_tile "all" "(setq ret (reverse lay)) (done_dialog)") (action_tile "accept" "(or (= (get_tile \"lst\") \"\") (foreach n (str2lst (get_tile \"lst\") \" \") (setq ret (cons (nth (atoi n) lay) ret)))) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) (reverse ret) )
  10. fabcad

    migration L93 viewport perdu

    Bonjour, La fonction AUTOPAN fait appel à une sous-fonction de manipulation de liste/string STR2LS, il faudrait rajouter après la dernière parenthèse ou à la première ligne comme ci-dessous : ;; STR2LST ;; Transforme un chaine avec séparateur en liste de chaines ;; ;; Arguments ;; str : la chaine à transformer en liste ;; sep : le séparateur ;; ;; Exemples ;; (str2lst "a b c" " ") -> ("a" "b" "c") ;; (str2lst "1,2,3" ",") -> ("1" "2" "3") ;; (mapcar 'read (str2lst "1,2,3" ",")) -> (1 2 3) (defun str2lst (str sep / pos) (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) ;;; AUTOPAN par GC - 2009/06 ;;; Effectue le panoramique spécfié par deux points ou un déplacement ;;; dans toutes les fenêtres des présentations sélectionnées (defun c:autopan (/ *error* p1 p2 acdoc layouts ctab vplst vp lock) (vl-load-com) (defun *error* (msg) (or (= msg "Fonction annulée") (princ (strcat "\nErreur: " msg)) ) (and ctab (vla-put-ActiveLayout acdoc ctab)) (princ) ) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (while (null (setq p1 (getpoint "\nSpécifiez le point de base ou dépalcement: " ) ) ) (princ "\nNécessite deux points ou un déplacement suivi de ENTREE." ) ) (if (null (setq p2 (getpoint "\nSpécifiez le deuxième point: " ) ) ) (setq p2 p1) (setq p2 (mapcar '- p2 p1)) ) (setq layouts (vla-get-Layouts acdoc) ctab (vla-get-ActiveLayout acdoc) ) (foreach l (getlayouts "Présentations à traiter" T) (setq vplst nil) (vlax-for obj (vla-get-Block (vla-item layouts l)) (if (= (vla-get-ObjectName obj) "AcDbViewport") (setq vplst (cons obj vplst)) ) ) (while (cdr vplst) (setq vp (car vplst) vplst (cdr vplst) lock nil ) (if (= (vla-get-DisplayLocked vp) :vlax-true) (progn (vla-put-DisplayLocked vp :vlax-false) (setq lock T) ) ) (vla-put-ActiveLayout acdoc (vla-item layouts l)) (vla-put-MSpace acdoc :vlax-true) (vla-put-ActivePViewport acdoc vp) (vla-put-Target vp (vlax-3d-point (mapcar '- (vlax-safearray->list (vlax-variant-value (vla-get-Target vp)) ) p2 ) ) ) (vla-put-MSpace acdoc :vlax-false) (if lock (vla-put-DisplayLocked vp :vlax-true) ) ) ) (vla-put-ActiveLayout acdoc ctab) (princ) ) ;; GETLAYOUTS par GC - 03/12/07 ;; Retourne la liste des présentations choisies dans la boite de dialogue ;; ;; arguments ;; titre : titre de la boite de dialogue ou nil, défauts = Choisir la (ou les) présentation(s) ;; mult : T ou nil (pour choix multiple ou unique) (defun GetLayouts (titre mult / lay tmp file ret) (setq lay (vl-sort (layoutlist) (function (lambda (x1 x2) (< (TabOrder x1) (TabOrder x2) ) ) ) ) tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (write-line (strcat "GetLayouts:dialog{label=" (if titre (vl-prin1-to-string titre) (if mult "\"Choisir les présentations\"" "\"Choisir une présentation\"" ) ) ";:list_box{key=\"lst\";multiple_select=" (if mult "true;}:row{:retirement_button{label=\"Toutes\";key=\"all\";} ok_button;cancel_button;}}" "false;}ok_cancel;}" ) ) file ) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "GetLayouts" dcl_id)) (exit) ) (start_list "lst") (mapcar 'add_list lay) (end_list) (action_tile "all" "(setq ret (reverse lay)) (done_dialog)") (action_tile "accept" "(or (= (get_tile \"lst\") \"\") (foreach n (str2lst (get_tile \"lst\") \" \") (setq ret (cons (nth (atoi n) lay) ret)))) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) (reverse ret) )
  11. Bonjour La Lozère Est ce que tes photos ont un fichier de géorérencement associé à chaque photo car je pense qu'à l'aide de 2 fonctionnalités AutoCAD MAP tu peux alors insérer ces images à la volée. 1- A l'aide de la fonction mapiinsert tu pourras attacher les photos comme la fonction AutoCAD mais avec le fichier de géorérencement elle seront calées 2- A l'aide du gestionnaire d'affichage AutoCAD MAP et de la connexion aux Données de type Raster elles seront affichées et bien sur calées. Bon après-midi, Fabcad
  12. Meilleurs Vœux pour l'année 2012 ainsi que la santé.
  13. Puisque c'est le forum Suggestions de développements, alors j'ai une routine qui me trotte dans la tête depuis un certain temps, ce serait le déplacement automatique des textuels en fonction du zoom ou d'un panoramique et de contraintes géométriques (textuels associés à des objets AutoCAD) Si ces objets sont fermé cercles, polylignes fermées ou autres, alors déplacer les textuels à l'intérieur de la zone issue du croisement entre les bords de l’espace objet et les "objets fermés". Si ces objets sont fermé lignes, polylignes ouvertes, alors déplacer les textuels sur les objets ouverts mais toujours dans la zone graphique de l’espace objet. Bonne soirée, Fabcad
  14. Bonjour lulu3109, Tes problèmes de liaison, d'affichage de données (annotations AutoCAD MAP) mis à jour par la pseudo base de données Excel et la hauteur de texte via un champ de cette dernière c'est tout simplement les commandes d'AutoCAD MAP. AutoCAD est limité lui par son DBCONNECT. Cordialement, Fabcad
  15. Finalement j'ai trouvé l'erreur, dans ma sous-routine de contrôle du type de champ, je ne verifiai pas correctement les listes que composaient les champs OD. Bonne journée, Fabcad proptood.lsp
  16. Bonjour, Continuant dans la lancée de la gestion des Données d'Objets (Xdatas améliorées), je souhaite remplir les champs des tables en récupérant des valeurs de propriétés d'objets AutoCAD, j'ai réussi enfin à gérer la case de dialogue (merci à Patrick_35 encore une fois), c'est apres que cela se corse, je récupère bien des 3 listes les 3 valeurs (Nom de la propriété, Nom de la Table OD et le nom du champ) J'ai une table TABLE-002 avec 4 champs ETIQ1, ETIQ2, ETIQ3 et ETIQ4. Si je choisi ETIQ2, ETIQ3 ou ETIQ4 le champ se remplit bien du calque. Mais avec le champ ETIQ1 ca ne fonctionne pas. Idem pour tous les premiers champs des tables. Etant sur cette fonction depuis ce matin, je ne vois plus les erreurs avec un œil neuf. Un peu d'aide serait la bienvenue. Merci d'avance, Fabcad proptood.dcl proptood.lsp
  17. En faisant une recherche sur Goo... qui est ton ami, j'ai trouvé le pourquoi du comment. c'est propre à AutoCAD MAP 3D 2007 avec la barre de statut en bas. Lancer le gestionnaire de la base de registre et se laisser guider par le pas à pas suivant : 1. Aller vers HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.0\ACAD-5002:xyz\Application s\AcMap (où xyz sont des chiffres et des caractères qui varient en fonction de la langue de la version en d'Autodesk Map 3D installée) 2. Sélectionnez AcMap et faire un clic droit sur Nouveau puis Valeur DWORD. 3. Renommez la valeur nouvellement créée avec Statusbar. 4. Comme valeur entrez 0. 5. Quittez l'éditeur de Registre Windows et lancez AutoCAD MAP.
  18. fabcad

    création de legende auto

    Bonsoir, Une routine AutoLISP crée par Lee Mac fait ce genre de legende : Table de blocs par Lee Mac çà répond peut-être à ta demande. Bonne soirée, Fabcad
  19. Bonjour à tous, Je me suis aperçu récemment qu'au démarrage d'un nouveau dessin, un appel pour modifier des variables et afficher des boites de dialogue se lance. - J'ai cherché dans tous les dossiers relatifs à AutoCAD, les ficheirs AutoCAD*.lsp, acad*.mnl. - Pas de script lancé au démarrage d'AutoCAD qui serai lié dans la chaine de lancement de l'icône de raccourci. Si vous avez des idées je suis preneur. Bonne journée, Fabcad pseudo-script-demarrage-autocad.txt
  20. :oBonjour a tous, Le lien pour le téléchargement ne s'affiche pas chez moi, Y a t'il des anciens sujets de cadxp qui sont partis loin d'ici ? Fabcad
  21. Bonjour Bonuscad, Merci pour tes informations sur ce point particulier. J'en prend note, Fabcad,
  22. Bonjour à tous, Après des heures passées à corriger des parenthèses, voici le résultat : un gestionnaire de Données d'Objets incluant l'option d'étiquetage. Je ne suis pas un spécialiste pour les améliorations ou les contrôles. Je le met à disposition, Fabcad gestionnaire_od.dcl gestionnaire_od.lsp
  23. Bonjour à tous, Afin de finir une routine d'étiquetage d'objets linéaires et surfaciques, je souhaiterai une sub-routine qui trouverai le centre de gravité d'un mpolygone AutoCADMAP comme la fonction PLINE-CENTROID de Gile qui fonctionne sur les polylignes fermées. Avec l'API Autolisp d'AutoCADMAP : (setq obj_acad (car (entsel))) puis (ade_expreval obj_acad ".center" "point") ca me retourne le centroide mais je souhaite connaitre un autre moyen pour enrichir mes connaissances. Merci,
  24. Bonjour aux utilisateurs de MAP, J'ai terminé une fonction qui permet de gérer les Données d'Objets et aussi d'étiqueter avec un Mtexte AutoCAD une valeur de champ de Données d'Objets choisi dans un gestionnaire OD (Merci à Patrick_35 pour son gestionnaire MAT.lsp). Voici le lien sur cadxp : http://cadxp.com/ind...s-liste-en-dcl/ Bonne journée, Fabcad
  25. Merci Patrick_35, En relisant ton MAT.lsp, j'ai compris par ton raisonnement et enfin ca boucle dans le bon sens. Soulagé : je suis :-) Je n'ai plus qu'a continuer dans ce gestionnaire OD. Bonne journée, Fabcad gestionnaire_od.lsp
×
×
  • 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é