-
Compteur de contenus
5 029 -
Inscription
-
Dernière visite
-
Jours gagnés
56
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par bonuscad
-
Salut, Je ne sais pas où tu en es! Mais je suis de ton avis, utiliser une biblio en Xref de petits fichiers n'est pas le plus judicieux. En effet si tu doit transmettre un tel fichier à un tiers, il risque d'y avoir une ribambelle de fichiers à fournir avec. Les inconvénients de recréer la structure de l'arborescence ou de de jouer avec PROJECTNAME, bref plutôt des soucis, les blocs à mon avis sont plus appropriés. Pour en revenir a ton souci de chemin, vu que tu utilises des noms long avec en plus des espaces, je pense que le chemin devrait être spécifié entre guillemet: "D:/AUTOCAD -PERSONNALISATION/_BIBLIOTHEQUE/ COMPLEMENT BIBCAD/" Dans ce cas la modification risque d'être plus laborieuse car il faut faire la concaténation avec la suite, ce que tu ne pourra faire avec un rechercher/remplacer. Il reste peut être la solution de te créer un lecteur virtuel associé à ce chemin de dossier pour en revenir à un remplacer plus simple. Mais le plus simple à mon avis: Laisse tomber... :(rires forts): Il m'est venu une idée après coup, tu peux peut être aussi utiliser les noms court... Pour les obtenir, tu vas dans la console DOS (executer "cmd"), puis tu fais un "dir /X" Généralement tu obtient un nom de ce style "AUTOCA~1"
-
Ben quand je vois tes images, je doute un peu... Dans ton image tu est dans l'ensemble de tes menu, un rechercher - remplacer va ce faire sur l'ensemble de ceux-ci (un peu dangereux à mon gout) NB: Slash = "/" Anti-slash = "\" Dans les macros l'anti-slash est compris comme une pause, c'est pour ça qu'il vaut mieux le remplacer par un slash PS: Sans vouloir tester, je pense que l'unité D: n'aura pas d'importance, mais au cas où cela ne fonctionne pas, tu peux essayer de l'inclure dans le chemin.
-
Il faut me lire... donc et dans Remplacer par: ^C^Cxref;;/bibcad/ pour toi sera ^C^Cxref;;\AUTOCAD -PERSONNALISATION\_BIBLIOTHEQUE\ COMPLEMENT BIBCAD/ Syntaxe à bien vérifier avec ta config et préférer le slash à l'anti-slash (ou alors doubler celui-ci)
-
Ben à part de la bidouille. Car le chemin n'est pas reconnu par les Xrefs malgré la déclaration dans les options. Ce qui fonctionne (après avoir essayé), je considère que tout a été installé sous "C:\BIBCAD\" Tu tape _CUI pour entrer dans la personnalisation de l'interface utilisateur Tu sélectionnes bibcad-x.cuix dans l'onglet "Personnaliser" Tu mets en video inverse XBIBCAD Tu fais alors un clic-droit et tu choisis "Remplacer..." Dans la nouvelle boite de dialogue dans rechercher, tu mets: ^C^Cxref;; et dans Remplacer par: ^C^Cxref;;/bibcad/ et tu choisis le bouton remplacer tout. Après l’application des changements cela devrait fonctionner...
-
Salut lili J'ai éditer le lien dans le message précédent, ça devrait être bon. (2.4 Mo) NB: Je crois que le menu destiné à l'utilisation de la bibliothèque en Xref ne fonctionne pas bien, préférer le menu d'insertion en bloc.
-
Salut, Pas vraiment d'idée... Mais je demande pourquoi, tant qu'à faire, ne pas utiliser la méthode "OpenAsTextStream" au lieu de startapp, tu aurais peut être plus de contrôle dans ton process. Je dis ça sans avoir essayé quoi que ce soit... Des liens qui traite du sujet http://www.cadtutor.net/forum/showthread.php?61300-I-need-a-way-to-check-if-a-pdf-file-is-open http://www.thecadforums.com/autocad-customization/24700-readfile-and-writefile-via-vlisp-activex.html Tu as aussi: http://www.menziengineering.ch/Downloads/Download.htm#34 Peut être en s'appuyant sur "DateLastAccessed"
-
Une vieille application. A priori sous une 2011, je viens d'essayer ça fonctionne. (je ne m'en suis pas servi depuis des lustres) Il faut juste ajouter le chemin dans les options et dans la personnalisation des menus (Cuix) penser à transférer les menus de mosaïque d'image dans la partie Ancienne. Je vous laisse bidouiller avec "Personnaliser l'interface utilisateur" Bibcad.zip
-
Question Visibilite/Invisibilite
bonuscad a répondu à un(e) sujet de lecrabe dans Pour aller plus loin en LISP
Salut, J'ai regardé et observé rapidement. La méthode par le code DXF 60 cache l'objet en mettant le bit à 1, mais elle met aussi la propriété de visibilité à 0 (vlax-dump-object) La nouvelle méthode sous 2011 ne change PAS le code DXF 60, mais seulement la propriété de visiblité. Si cette propriété est à -1 (l'objet est visible) et à 0 (l'objet est invisible) Je pense (sans avoir regardé plus en profondeur) que cette nouvelle méthode doit utiliser les dictionnaires puisque qu'on peut retrouver cette propriété active d'une session à l'autre suivant l'état de la variable OBJECTISOLATIONMODE. La méthode du bit (60 . 1) est plus radicale et sans connaissance de programmation plus difficile à remettre en l'état si on n'a pas l'outil. La nouvelle méthode est moins brute et permet à quiconque de remettre la visibilité en l'état. Pour ma part je ne réserverai la 1ere méthode qu'a des besoins de programmation spécifique. En utilisation courante il vaudra mieux opter pour cette nouvelle fonctionnalité. -
Texte et Texte Multiligne à hauteur adaptable
bonuscad a posté un sujet dans Pour aller plus loin en LISP
Bonjour, Un peu pour le "fun" et pour voir si cela serait exploitable, je tente de créer des textes dont la hauteur s’adapterait à l'échelle de la fenêtre papier. Je sais il y les textes annotatifs qui répondent à ce besoin. Mais je trouve ceux-ci un peu fastidieux à mettre en place et ne fonctionne que pour les échelles déterminées (en plus d'un alourdissement notoire du fichier dessin) Il m'arrive souvent d'établir des sorties qui ne sont pas liées à une échelle, mais plutôt à un format de feuille (donc échelle bidon) et bien sur mes textes ne sont pas adaptés à cette échelle. J'ai donc pensé à utiliser un style de cotation où ceux-ci s'adapteraient à la fenêtre, moyen très souple si l'on reste dans une fourchette d'échelle raisonnable. Le code que j'ai pondu me pose problème; même si la conversion de mes textes et textes multiligne en cotation se passe bien. C'est lors de l'utilisation de la commande "Mettre à jour" du menu cotation que ça part en "live", je perds le style du texte. J'ai du faire quelque chose de travers mais je n'arrive pas à voir quoi !!! Si quelqu'un à une idée ? (defun C:AutoTextScale ( / AcDoc Space js n ent ename txt_height txt_ins txt_rot txt_styl txt_lay txt_col txt_ltyp txt_lweight txt_string txt_sty font_styl dim_sty nw_obj) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (setq js (ssget ;"_X" (list (cons 0 "*TEXT") (cons 67 (if (eq (getvar "CVPORT") 2) 0 1)) (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB"))) ) ) ) (cond (js (cond ((null (tblsearch "DIMSTYLE" "$AutoScaleDim")) (setq dim_sty (vla-add (vla-get-dimstyles AcDoc) "$AutoScaleDim")) ) (T (setq dim_sty (vla-item (vla-get-dimstyles AcDoc) "$AutoScaleDim"))) ) (vla-put-ActiveDimStyle AcDoc dim_sty) (mapcar '(lambda (dimvar value / ) (vla-setvariable AcDoc dimvar Value)) '("DIMPOST" "DIMAPOST" "DIMSCALE" "DIMASZ" "DIMEXO" "DIMDLI" "DIMEXE" "DIMRND" "DIMDLE" "DIMTP" "DIMTM" "DIMTXT" "DIMCEN" "DIMTSZ" "DIMALTF" "DIMLFAC" "DIMTVP" "DIMTFAC" "DIMGAP" "DIMALTRND" "DIMTOL" "DIMLIM" "DIMTIH" "DIMTOH" "DIMSE1" "DIMSE2" "DIMTAD" "DIMZIN" "DIMALT" "DIMALTD" "DIMTOFL" "DIMSAH" "DIMTIX" "DIMSOXD" "DIMCLRD" "DIMCLRE" "DIMCLRT" "DIMADEC" "DIMDEC" "DIMTDEC" "DIMALTU" "DIMALTTD" "DIMAUNIT" "DIMFRAC" "DIMLUNIT" "DIMDSEP" "DIMTMOVE" "DIMJUST" "DIMSD1" "DIMSD2" "DIMTOLJ" "DIMTZIN" "DIMALTZ" "DIMALTTZ" "DIMUPT" "DIMATFIT") '("" "" 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.25 0.0 0.0 25.4 1.0 0.0 1.0 0.0 0.0 0 0 0 0 1 1 0 0 0 2 0 0 1 0 0 0 0 0 4 4 2 2 0 0 2 "." 2 0 1 1 1 0 0 0 0 3) ) (repeat (setq n (sslength js)) (vla-CopyFrom dim_sty AcDoc) (setq ename (vlax-ename->vla-object (setq ent (ssname js (setq n (1- n))))) txt_height (* 0.01 (vlax-get ename 'Height)) txt_ins (vlax-get ename 'InsertionPoint) txt_rot (vlax-get ename 'Rotation) txt_styl (vlax-get ename 'StyleName) txt_lay (vlax-get ename 'Layer) txt_col (vlax-get ename 'Color) txt_ltyp (vlax-get ename 'LineType) txt_lweight (vlax-get ename 'Lineweight) txt_string (vlax-get ename 'TextString) ) (cond ((null (tblsearch "STYLE" (strcat "$AutoScale-" txt_styl))) (setq txt_sty (vla-add (vla-get-textstyles AcDoc) (strcat "$AutoScale-" txt_styl))) (vlax-for for-item (vla-get-textstyles AcDoc) (if (eq (vlax-get for-item 'Name) txt_styl) (setq font_styl (vlax-get for-item 'fontFile))) ) (mapcar '(lambda (pr val) (vlax-put txt_sty pr val) ) (list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag) (list font_styl 0.0 0.0 1.0 0.0) ) ) ) (vla-setvariable AcDoc "DIMTXT" txt_height) (setq nw_obj (vla-AddDimOrdinate Space (setq pt_dim (vlax-3d-point txt_ins)) pt_dim 0 ) ) (vla-put-Layer nw_obj txt_lay) (vla-put-Color nw_obj txt_col) (vla-put-LineType nw_obj txt_ltyp) (vla-put-Lineweight nw_obj txt_lweight) (vla-put-AltRoundDistance nw_obj 0.0) (vla-put-AltSubUnitsFactor nw_obj 1.0) (vla-put-AltSubUnitsSuffix nw_obj "") (vla-put-AltSuppressLeadingZeros nw_obj 0) (vla-put-AltSuppressTrailingZeros nw_obj 0) (vla-put-AltSuppressZeroFeet nw_obj -1) (vla-put-AltSuppressZeroInches nw_obj -1) (vla-put-AltTextPrefix nw_obj "") (vla-put-AltTextSuffix nw_obj "") (vla-put-AltTolerancePrecision nw_obj 3) (vla-put-AltToleranceSuppressLeadingZeros nw_obj 0) (vla-put-AltToleranceSuppressTrailingZeros nw_obj 0) (vla-put-AltToleranceSuppressZeroFeet nw_obj -1) (vla-put-AltToleranceSuppressZeroInches nw_obj -1) (vla-put-AltUnits nw_obj 0) (vla-put-AltUnitsFormat nw_obj 2) (vla-put-AltUnitsPrecision nw_obj 3) (vla-put-AltUnitsScale nw_obj 0.1) (vla-put-ArrowheadSize nw_obj 0.0) (vla-put-DecimalSeparator nw_obj ".") (vla-put-DimTxtDirection nw_obj 0) (vla-put-EntityTransparency nw_obj "ByLayer") (vla-put-ExtensionLineColor nw_obj 0) (vla-put-ExtensionLineOffset nw_obj 0.0) (vla-put-ExtensionLineWeight nw_obj -2) (vla-put-ExtLineFixedLen nw_obj 0.0) (vla-put-ExtLineFixedLenSuppress nw_obj 0) (vla-put-FractionFormat nw_obj 0) (vla-put-LinearScaleFactor nw_obj 1.0) (vla-put-Linetype nw_obj "ByLayer") (vla-put-LinetypeScale nw_obj 1.0) (vla-put-Lineweight nw_obj -1) (vla-put-Material nw_obj "ByLayer") ;(vla-put-PlotStyleName nw_obj "ByLayer") (vla-put-PrimaryUnitsPrecision nw_obj 2) (vla-put-Rotation nw_obj 0.0) (vla-put-RoundDistance nw_obj 0.0) (vla-put-ScaleFactor nw_obj 1.0) (vla-put-StyleName nw_obj "$AutoScaleDim") (vla-put-SubUnitsFactor nw_obj 1.0) (vla-put-SubUnitsSuffix nw_obj "") (vla-put-SuppressLeadingZeros nw_obj 0) (vla-put-SuppressTrailingZeros nw_obj 0) (vla-put-SuppressZeroFeet nw_obj -1) (vla-put-SuppressZeroInches nw_obj -1) (vla-put-TextColor nw_obj 0) (vla-put-TextFill nw_obj 0) (vla-put-TextFillColor nw_obj 0) (vla-put-TextGap nw_obj 0.0) (vla-put-TextHeight nw_obj txt_height) (vla-put-TextMovement nw_obj 2) (vla-put-TextOverride nw_obj txt_string) (vla-put-TextPosition nw_obj pt_dim) (vla-put-TextPrefix nw_obj "") (vla-put-TextRotation nw_obj txt_rot) (vla-put-TextStyle nw_obj (strcat "$AutoScale-" txt_styl)) (vla-put-TextSuffix nw_obj "") (vla-put-ToleranceDisplay nw_obj 0) (vla-put-ToleranceHeightScale nw_obj 1.0) (vla-put-ToleranceJustification nw_obj 0) (vla-put-ToleranceLowerLimit nw_obj 0.0) (vla-put-TolerancePrecision nw_obj 2) (vla-put-ToleranceSuppressLeadingZeros nw_obj 0) (vla-put-ToleranceSuppressTrailingZeros nw_obj -1) (vla-put-ToleranceSuppressZeroFeet nw_obj -1) (vla-put-ToleranceSuppressZeroInches nw_obj -1) (vla-put-ToleranceUpperLimit nw_obj 0.0) (vla-put-UnitsFormat nw_obj 2) (vla-put-VerticalTextPosition nw_obj 1) (vla-put-Visible nw_obj -1) (entdel ent) ) ) ) (prin1) ) NB: conçu sous une 2011, pour une 2008 il y a quelques lignes à mettre en rem dans les vla-put concernant les réglages des cotations. (inconnues sous 2008) -
Ce n'est pas possible. Ce que tu demandes est réservé aux seuls fichiers AutoCAD.PAT et ACADISO.PAT Soit tu rajoute tes modèles dans l'un de ces 2 fichiers (avec les inconvénients lors de changement de version ou de réinstallation/réparation du logiciel où il faudra remettre à jour ces fichiers). De plus l'édition de l'un de ces deux fichiers peut être une catastrophe suivant l'éditeur utilisé en rendant ces fichiers incompréhensible pour autocad ou occasionnant des erreurs dans les définitions de motifs. Soit tu te contente de fichiers individuels. Pour ma part je te conseille de rester dans ce cas de figure, plus facile à gérer.
-
Je pense que ton problème vient de ton système de coordonnée général. Celui ci doit être très éloigné de l'origine, ce qui occasionne lors du calcul du raccordement une imprécision. Si tu veux vraiment obtenir un raccord parfait, il te faut déplacer temporairement tes objets vers l'origine, effectuer le raccord et ramener ces dernier à l'emplacement précédent. Je concède que cela n'est pas pratique; il vaudrait peut être mieux déplacer l'ensemble du dessin d'un vecteur qui sera noté soigneusement pour pouvoir le ramener à sa position initiale en fin d'édition. NB:Contrairement aux hachures, un SCU provisoire ne règle pas ce problème des raccordements
-
imprimer plusieurs espace papier DANS L'ORDRE
bonuscad a répondu à un(e) sujet de ludo07 dans AutoCAD 2004
Avec PDFCreator, si tu mets ta 1ere impression en file d'attente, lorsque tous tes onglets sont imprimés, tu peux dans le gestionnaire de ce dernier déplacer les documents et ainsi les mettre dans l'ordre voulu. (menu "Document" "Monter, Descendre"). Une fois en ordre, tu les sélectionnes tous, et tu les fusionnes. Ainsi tu n'as qu'un document PDF avec les pages dans l'ordre. -
Comme dis précédemment Dans ton cas, ce serait, pour aller en corrélation avec les modifs: (write-line (strcat "Maintien" str_sep "Coordonée X" str_sep "Coordonée Y" str_sep "Coordonée Z") f_open)
-
Pas directement dans Excel, mais par un fichier CSV. PtDef2CSV.lsp Après une légère modif, tu aurais ce que tu veux. Remplacer (vers la fin): (strcat (itoa (setq nbs (1+ nbs))) str_sep (cdr (assoc 0 dxf_cod)) str_sep (rtos (car n) 2 3) str_sep (rtos (cadr n) 2 3) str_sep (rtos (caddr n) 2 3) ) par (strcat (vlax-get ename 'Handle) str_sep (rtos (car n) 2 3) str_sep (rtos (cadr n) 2 3) str_sep (rtos (caddr n) 2 3) ) Voir aussi si la précision de 3 décimale te convient. Mettre éventuellement en REM avec un ";" la ligne ou l'ajuster à tes désirs: (write-line (strcat "Matricule" str_sep "Type Entité" str_sep "Coordonée X" str_sep "Coordonée Y" str_sep "Coordonée Z") f_open)
-
Bien que ancien ce sujet, et si tu ne dispose pas de Covadis, devrait faire l'affaire. Coupe_tn fonctionne sur des 3Dfaces et cote automatiquement la coupe. En respectant les couleurs citées cela peut coter aussi des polylignes projet dessinées ultérieurement(couche géologique?) Si tu modifies les polylignes générées ou dessinées , il suffit de relancer choisir_coupe pour re-coter la coupe selectionnée. Est-ce que cela va te permettre de te coucher plus tôt ce soir? J'espère que cela fonctionnera sur ton fichier un peu lourd...
-
Bonjour, Suite à une demande pour faire l'équivalent de la commande RECHERCHER (_FIND), mais applicable dans un script, j'ai pondu le code qui suit. Bien que testé brièvement, il a l'air de fonctionner sur des TEXT, MTEXT, INSERT (avec Attributs), MULTILEADER La substitution ne s'arrête pas à la première correspondance trouvé dans un texte, toutes les occurrences sont remplacées. (cela peut souvent être le cas, surtout dans un texte multiligne) (defun my_replace_text (new_string old_string / js n ename) (vl-load-com) (defun string-subst (nam_obj / value_string nbs tmp_nbs) (setq value_string (vlax-get nam_obj 'TextString) nbs 0) (while nbs (if (setq nbs (vl-string-search old_string value_string (setq tmp_nbs nbs))) (setq value_string (vl-string-subst new_string old_string value_string tmp_nbs) nbs (1+ nbs) ) ) ) (vlax-put nam_obj 'TextString value_string) ) (setq js (ssget "_X" '( (-4 . "<OR") (0 . "*TEXT,MULTILEADER,ATTDEF") (-4 . "<AND") (0 . "INSERT") (66 . 1) (-4 . "AND>") (-4 . "OR>") ) ) ) (cond (js (repeat (setq n (sslength js)) (setq ename (vlax-ename->vla-object (ssname js (setq n (1- n))))) (cond ((vlax-property-available-p ename 'TextString) (string-subst ename) ) (T (mapcar '(lambda (att) (string-subst att) ) (vlax-invoke ename 'GetAttributes) ) ) ) ) ) ) (prin1) ) Usage: (my_replace_text "Nouvelle chaine" "Ancienne chaine") Attention, sensible à la case des caractères (Majuscule, Minuscule)
-
Bonsoir, Pourrais tu faire un WBLOC (ou commande _WBLOCK) du contour et les hachures associées de ce modèle de hachure et tu le poste ici. (commande à faire de prèfèrence depuis le SCG). Je suis curieux d'essayer de comprendre le problème (si problème il y a avec le Wbloc mis à disposition)
-
Bonjour, Je ne retrouve pas le post original que j'ai pu faire sur CadXp (la recherche me limite à une date), néambois un sujet où il est repris Le lien Si tu veux être sur de l'original Ca peut te donner des idées ...
-
ajout de blocs intempestifs à l'ouverture d'un fichier
bonuscad a répondu à un(e) sujet de philsogood dans AutoCAD 2010
Bonjour, Je reconnais le style créé par un lisp de ma composition. (cela date un peu...) A l'origine il permettait l'import de fichier TRF généré depuis un logiciel routier (PISTE+ du Setra) sous Autocad. Il a du être inclut quelque part par un utilisateur pour se charger automatiquement et être exécuté car à l'origine ce n'était pas le cas. Vérifie le contenu des fichiers: acad.lsp, acadocxxx.lsp, les fichier .mnl, en fin tout ce qui peut être lancé au démarrage d'un dessin. En tout cas cela ne vient pas de la routine elle-même, je ne l'avais pas conçue dans ce sens. Un bidouillage malheureux d'un utilisateur...! Edit: Une recherche sur le site avec "$TRF_COT" te donnera des discussions ou j'ai pu livrer du code adapté; notamment pour faire des coupes cotées de TN à partir de 3Dfaces. Les codes se chargeaient de créer les blocs s'ils n'existaient pas dans le dessin avec (entmake). Il faut éviter l’exécution automatique d'une telle routine... -
Un dernier coup de pouce! (c'est Noël) :) Je te laisse comparer au dernier code donné pour comprendre l'évolution. Ce qui a changé: Ne cote plus le deltaZ mais bien l'altitude des sommets de la polyligne, les cotes sont placées sous la ligne sélectionnée. Puis les distances cumulées et les distances partielles. (defun c:DimTwo (/ adoc space obj_dim height_dim pl refl lst_pt pt_o nw_obj pt2) (vl-load-com) (setq adoc (vla-get-activedocument (vlax-get-acad-object)) space (if (= 1 (getvar "CVPORT")) (vla-get-paperspace adoc) (vla-get-modelspace adoc) ) obj_dim (vla-add (vla-get-Dimstyles adoc) "COTE-PT_VERT") ) (vla-put-activedimstyle adoc obj_dim) (initget 6) (setq height_dim (getdist (getvar "VIEWCTR") (strcat "\nHauteur du texte de cotation <" (rtos (getvar "DIMTXT")) ">: "))) (if height_dim (vla-setvariable adoc "DIMTXT" height_dim) (setq height_dim (getvar "DIMTXT"))) (mapcar '(lambda (dimvar value / ) (vla-setvariable adoc dimvar Value)) '("DIMPOST" "DIMAPOST" "DIMSCALE" "DIMASZ" "DIMEXO" "DIMDLI" "DIMEXE" "DIMRND" "DIMDLE" "DIMTP" "DIMTM" "DIMCEN" "DIMTSZ" "DIMALTF" "DIMLFAC" "DIMTVP" "DIMTFAC" "DIMGAP" "DIMALTRND" "DIMTOL" "DIMLIM" "DIMTIH" "DIMTOH" "DIMSE1" "DIMSE2" "DIMTAD" "DIMZIN" "DIMALT" "DIMALTD" "DIMTOFL" "DIMSAH" "DIMTIX" "DIMSOXD" "DIMCLRD" "DIMCLRE" "DIMCLRT" "DIMADEC" "DIMDEC" "DIMTDEC" "DIMALTU" "DIMALTTD" "DIMAUNIT" "DIMFRAC" "DIMLUNIT" "DIMDSEP" "DIMTMOVE" "DIMJUST" "DIMSD1" "DIMSD2" "DIMTOLJ" "DIMTZIN" "DIMALTZ" "DIMALTTZ" "DIMUPT" "DIMATFIT") '("" "" 1.0 2.5 0.625 3.75 1.25 0.0 0.0 0.0 0.0 2.5 0.0 0.0393701 1.0 0.0 1.0 0.625 0.0 0 0 0 0 1 1 1 8 0 3 1 0 0 0 0 0 0 0 2 2 2 3 0 0 2 "." 0 2 1 1 0 8 0 0 0 3) ) (vla-copyfrom obj_dim adoc) (princ "\nSelectionner la Polyligne: ") (while (null (setq pl (ssget "_+.:E:S:L" '((0 . "LWPOLYLINE"))))) (princ "\nCe n'est pas une polyligne optimisée!")) (princ "\nSelectionner la ligne du Plan de Comparaison: ") (while (null (setq refl (ssget "_+.:E:S:L" '((0 . "LINE"))))) (princ "\nCe n'est pas une ligne!")) (setq pt_o (cdr (assoc 10 (entget (ssname refl 0))))) (vla-addLine space (vlax-3d-point '(0.0 0.0 0.0)) (vlax-3d-point '(100000.0 0.0 0.0)) ) (setq refl (vlax-ename->vla-object (setq ent_line (entlast))) lst_pt (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (ssname pl 0)))) ) (foreach pt lst_pt (setq nw_obj (vla-addDimRotated space (vlax-3d-point (append pt '(0.0))) (vlax-3d-point (setq pt2 (vlax-curve-getclosestpointto refl pt)) ) (vlax-3d-point (mapcar '(lambda (a B) (* (+ a B) 0.5)) pt pt2) ) (* pi 0.5) ) ) (vlax-put nw_obj 'TextPosition (list (car (vlax-get nw_obj 'TextPosition)) (- (cadr pt_o) (* 3.0 (getvar "DIMTXT"))) (caddr pt2))) ) (foreach pt (cdr lst_pt) (setq nw_obj (vla-addDimRotated space (vlax-3d-point (append (car lst_pt) '(0.0))) (vlax-3d-point (append pt '(0.0))) (vlax-3d-point (setq pt2 (vlax-curve-getclosestpointto refl pt)) ) 0.0 ) ) (vlax-put nw_obj 'TextRotation (* pi 0.5)) (vlax-put nw_obj 'TextPosition (list (- (car pt2) (* 1.0 (getvar "DIMTXT"))) (- (cadr pt_o) (* 10.0 (getvar "DIMTXT"))) (caddr pt2))) ) (setq obj_dim (vla-add (vla-get-Dimstyles adoc) "COTE-PT_HORI")) (vla-put-activedimstyle adoc obj_dim) (vla-setvariable adoc "DIMTXT" height_dim) (mapcar '(lambda (dimvar value / ) (vla-setvariable adoc dimvar Value)) '("DIMPOST" "DIMAPOST" "DIMSCALE" "DIMASZ" "DIMEXO" "DIMDLI" "DIMEXE" "DIMRND" "DIMDLE" "DIMTP" "DIMTM" "DIMCEN" "DIMTSZ" "DIMALTF" "DIMLFAC" "DIMTVP" "DIMTFAC" "DIMGAP" "DIMALTRND" "DIMTOL" "DIMLIM" "DIMTIH" "DIMTOH" "DIMSE1" "DIMSE2" "DIMTAD" "DIMZIN" "DIMALT" "DIMALTD" "DIMTOFL" "DIMSAH" "DIMTIX" "DIMSOXD" "DIMCLRD" "DIMCLRE" "DIMCLRT" "DIMADEC" "DIMDEC" "DIMTDEC" "DIMALTU" "DIMALTTD" "DIMAUNIT" "DIMFRAC" "DIMLUNIT" "DIMDSEP" "DIMTMOVE" "DIMJUST" "DIMSD1" "DIMSD2" "DIMTOLJ" "DIMTZIN" "DIMALTZ" "DIMALTTZ" "DIMUPT" "DIMATFIT") '("" "" 1.0 2.5 0.625 3.75 1.25 0.0 0.0 0.0 0.0 2.5 0.0 0.0393701 1.0 0.0 1.0 0.625 0.0 0 0 0 0 1 1 0 8 0 3 1 0 0 0 0 0 0 0 2 2 2 3 0 0 2 "." 0 0 1 1 0 8 0 0 0 3) ) (vla-copyfrom obj_dim adoc) (while (cdr lst_pt) (setq nw_obj (vla-addDimRotated space (vlax-3d-point (append (car lst_pt) '(0.0))) (vlax-3d-point (append (cadr lst_pt) '(0.0))) (vlax-3d-point (vlax-curve-getclosestpointto refl (mapcar '(lambda (a B) (* (+ a B) 0.5)) (car lst_pt) (cadr lst_pt))) ) 0.0 ) lst_pt (cdr lst_pt) ) (vlax-put nw_obj 'TextPosition (list (car (vlax-get nw_obj 'TextPosition)) (- (cadr pt_o) (* 15.0 (getvar "DIMTXT"))) (caddr pt2))) ) (entdel ent_line) (princ) ) Tester que très rapidement, le principe est là, il faut améliorer encore...
-
Les filtres de point sont efficace mais un peu fastidieux quand on doit répéter cela à chaque fois. On peut automatiser l'introduction de ces filtres pour une utilisation moins contraignante (identique à la commande originale), par exemple pour la commande _3DPOLY (defun err_lxy (ch) (cond ((eq ch "Function cancelled") nil) ((eq ch "quit / exit abort") nil) ((eq ch "console break") nil) (T (princ ch)) ) (if pt_b (command "")) (setq last#point_cmd T *error* olderr) (setvar "cmdecho" 1) (princ) ) (defun c:3Dpoly_xy ( / odlerr msg_f msg_n n pt_b pt_n) (setvar "cmdecho" 0) (setq olderr *error* *error* err_lxy) (setq msg_f "\nSpécifiez le point suivant .XY de, ou [annUler]: " msg_n "\nSpécifiez le point suivant .XY de, ou [Clore/annUler]: " n 0 ) (while (null pt_B) (setq pt_b (getpoint "\nSpécifiez le premier point .XY de: ")) (if (and (null pt_B) last#point_cmd) (setq pt_b (getvar "lastpoint")) (if (not last#point_cmd) (princ "\nAucune ligne ou arc à continuer.")) ) ) (command "_.3dpoly" ".xy" pt_b 0.0) (princ " Z de 0.0 ") (initget "U ANNUler _Undo UNDO") (while (and (setq pt_n (getpoint pt_b (if (< n 2) msg_f msg_n))) (/= pt_n "Close")) (if (< n 1) (initget "U ANNUler _Undo UNDO") (initget "U ANNUler Clore _Undo UNDO Close") ) (if (listp pt_n) (progn (command ".xy" pt_n 0.0) (setq n (1+ n) pt_b pt_n) (princ " Z de 0.0 ") ) (if (zerop n) (princ "\nTous les segments sont déjà annulés.") (progn (command "_undo") (setq n (1- n) pt_b (getvar "lastpoint")) ) ) ) ) (if (eq pt_n "Close") (command "_close") (command "") ) (setq last#point_cmd T *error* olderr) (setvar "cmdecho" 1) (princ) )
-
Je ne pense pas que ce soit possible. Et puis dans ton calque, tu peux avoir des objets blocs / hachures qui peuvent faire référence à d'autres objets sur d'autres calques. Un p'tit coup d' _EXPLODE et la taille du fichier en sera fortement pertubée. Alors connaitre la taille précisément par calque... En outre si une application verticale est utilisée (Map, Architecture etc...), elle peut changer la taille des objets par des données complémentaires (dictionnaires, données étendues...)
-
Slt, La variable OSNAPZ devrait répondre à ton besoin.
-
Bonjour, Mon oeuvre ICI, ou la version reprise par (gile) sur Sa page De mémoire; la version de (gile) peut écrire dans un fichier (pour la mienne, il faut faire un copier-coller du retour.) Et sa matrice de transformation est moins brouilonne que la mienne.
