-
Compteur de contenus
12 247 -
Inscription
-
Dernière visite
-
Jours gagnés
209
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par (gile)
-
[Résolu] Déplacement dans un calque par Lisp
(gile) a répondu à un(e) sujet de barbichette dans AutoCAD 2020-2024
Salut, Montre ce que tu as déjà écrit, qu'on puisse voir où tu en es. -
C'est : "LINE,LWPOLYLINE,POLYLINE", pas : "LINE,LWPOLYLIGNE,POLYLIGNE".
-
Comme expliqué dans la documentation : "Les listes de filtres sont composées de paires d'arguments. Le premier argument identifie le type de filtre (par exemple, un objet), et le second argument spécifie la valeur sur laquelle vous filtrez (par exemple, des cercles). Le type de filtre est un code de groupe DXF qui spécifie le filtre à utiliser." En VBA ces "paires" sont transposées dans deux tableaux (array), un pour les types (filterType), l'autre (filterData) pour les valeurs correspondantes. Par exemple, pour filtrer tous les cercles sur le calque "toto" dont le rayon est égal à 10, on a besoin de 3 "paires : une pour le type d'entité (code de groupe DXF = 0, valeur = "CIRCLE"), une pour le calque (code de groupe DXF = 8, valeur = "toto") et une pour le rayon (code de groupe DXF = 40, valeur = 10.0). Les 2 tableaux auront donc 3 éléments chacun, celui des types (filterType) contiendra (0, 8, 40) ; celui des valeurs (filterData) contiendra ("CIRCLE", "toto", 10.0). Dim filterType(2) As Integer Dim filterData(2) As Variant filterType(0) = 0 filterData(0) = "CIRCLE" filterType(1) = 8 filterData(1) = "toto" filterType(2) = 40 filterData(2) = 10.0 Ce qui devrait aussi pouvoir s'écrire aussi comme ça (non garanti, je ne connais pas bien le VBA). Dim filterType As Variant Dim filterData As Variant filterType = Array(0, 8, 40) filterData = Array("CIRCLE", "toto", 10.0)
-
Mais ça fonctionne bien "comme en AutoLISP" comme le dit @Luna (et comme en ObjectARX ou .NET). La différence est uniquement dans les structures utilisées (les types (codes de groupe DXF) et les données sont identiques) : - des "paires pointées" en LISP : ((0 . "LINE,LWPOLYLINE") (67 . 0)) - des tableaux pour les types et les valeurs en VBA : filterType = Array(0, 67) filterData = Array("LINE,LWPOLYLINE", 0) - des "TypedValue" en .NET : { TypedValue(0, "LINE,LWPOLYLINE"), TypedValue(67, 0) } Dans tous les cas on peut utiliser les opérateurs "OR" et "AND" - LISP : ((-4 . "<AND") (-4 . "<OR") (0 . "LINE") (0 . "LWPOLYLINE") (-4 . "OR>") (67 . 0) (-4 . "AND")) - VBA : filterType = Array(-4, -4, 0, 0, -4, 67, -4) filterData = Array("<AND", "<OR", "LINE", "LWPOLYLINE", "OR>", 0, "AND>")
-
Mise à jour Attributs Blocs
(gile) a répondu à un(e) sujet de PhilBat dans ObjectARX/DBX, C++, .NET, RealDWG
Tu devrais pouvoir t'inspirer de ça : [CommandMethod("PHILBAT")] public static void PhilBat() { var doc = Application.DocumentManager.MdiActiveDocument; var db = doc.Database; var ed = doc.Editor; using (var tr = db.TransactionManager.StartTransaction()) { var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead); if (bt.Has("-Depart01") && bt.Has("-Depart01v3")) { var source = (BlockTableRecord)tr.GetObject(bt["-Depart01v3"], OpenMode.ForRead); var sourceAtts = new List<AttributeDefinition>(); foreach (ObjectId id in source) { if (id.ObjectClass.DxfName == "ATTDEF") { sourceAtts.Add((AttributeDefinition)tr.GetObject(id, OpenMode.ForRead)); } } var target = (BlockTableRecord)tr.GetObject(bt["-Depart01"], OpenMode.ForRead); var attValues = new Dictionary<string, string>(); foreach (ObjectId brId in target.GetBlockReferenceIds(true, false)) { var br = (BlockReference)tr.GetObject(brId, OpenMode.ForWrite); foreach (ObjectId attId in br.AttributeCollection) { var attRef = (AttributeReference)tr.GetObject(attId, OpenMode.ForWrite); attValues[attRef.Tag] = attRef.TextString; attRef.Erase(); } br.BlockTableRecord = bt["-Depart01v3"]; foreach (var attDef in sourceAtts) { var attRef = new AttributeReference(); attRef.SetAttributeFromBlock(attDef, br.BlockTransform); if (attValues.ContainsKey(attDef.Tag.ToUpper())) { attRef.TextString = attValues[attDef.Tag.ToUpper()]; } ObjectId id = br.AttributeCollection.AppendAttribute(attRef); tr.AddNewlyCreatedDBObject(attRef, true); } } } tr.Commit(); } } -
Mise à jour Attributs Blocs
(gile) a répondu à un(e) sujet de PhilBat dans ObjectARX/DBX, C++, .NET, RealDWG
Salut, Pourrais-tu élaborer un petit peu ta demande, je ne comprends pas ce que tu entends par : "redéfinir par un autre bloc". S'agit-il de redéfinir une définition de bloc (BlockTableRecord) ou de mettre à jour une référence de bloc (BlockReference), ou les deux ? Un petit exemple serait le bienvenu. -
remplacement de texte dans plusieurs .dwg
(gile) a répondu à un(e) sujet de Johann dans AutoCAD 2016
Salut, En remplaçant : set accoreexe="C:\Program Files\Autodesk\AutoCAD 2016\accoreconsole.exe" par : set accoreexe="C:\Program Files\Autodesk\AutoCAD 2020\accoreconsole.exe" ou : set accoreexe="C:\Program Files\Autodesk\AutoCAD 2021\accoreconsole.exe" ? -
[Résolu] - Command "_dim" ou "_cot" dans un programme LISP
(gile) a répondu à un(e) sujet de LElemurien dans Débuter en LISP
Salut, Essaye comme ça : (initcommandversion) (command "_.dim") (while (< 0 (getvar 'cmdactive)) (command pause) ) -
[Résolu] Conversion de DWG en fichier "image"
(gile) a répondu à un(e) sujet de DenisHen dans AutoCAD 2020-2024
Tu n'as pas besoin de les refaire. Tu paramètres AutoCAD pour avoir un fond blanc et tu lances un traitement par lot avec SuperAutoScript juste pour passer en espace objet, faire un zoom étendu et enregistrer. -
[Résolu] Conversion de DWG en fichier "image"
(gile) a répondu à un(e) sujet de DenisHen dans AutoCAD 2020-2024
Salut, J'avais oublié de préciser ça, mais @Luna l'a bien décrit. L'image est générée à partir de la "miniature" (thumbnail) du fichier qui elle même est générée (par AutoCAD) depuis l'espace objet du dessin tel qu'au dernier enregistrement. Il faut donc que le dessin soit enregistré sur fond blanc et que l'image ne nécessite pas une grande définition. -
[Résolu] Conversion de DWG en fichier "image"
(gile) a répondu à un(e) sujet de DenisHen dans AutoCAD 2020-2024
Salut, Tu peux essayer le petit exécutable dans le ZIP ci-joint (penser à débloquer le ZIP avant de lancer l'exécutable). Il enregistre les "miniatures" des fichiers sélectionnés au format PNG dans le dossier choisi. DwgThumbnail.zip -
Une version peut-être plus explicite qui dessine un cercle symbolisant le rayon d'action restant à chaque nouveau sommet spécifié. (defun c:RIA (/ *error* doc space radius rad startPt circle pt0 pt1 pts pline break) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (defun *error* (msg) (and msg (/= msg "Fonction annulée") (princ (strcat "\nErreur: " msg)) ) (vla-EndUndoMark doc) (princ) ) (vla-StartUndoMark doc) (setq space (vla-get-Block (vla-get-activeLayout doc)) radius (cond ((getenv "RiaMaximumRadius")) ((setenv "RiaMaximumRadius" "30.00")) ) ) (if (setq rad (getdist (strcat "\nEntrez le rayon maximum <" radius ">: "))) (setenv "RiaMaximumRadius" (rtos rad 2 2)) (setq rad (atof radius)) ) (if (setq startPt (getpoint "\nSpécifier le point de départ: ")) (progn (setq circle (vla-AddCircle space (vlax-3d-point (trans startPt 1 0)) rad)) (setq pt0 startPt ) (while (and (not break) (setq pt1 (getpoint pt0 "\nSpécifier le point suivant (ou valider): ")) ) (vla-Delete circle) (if pline (if (< (+ (vla-get-Length pline) (distance (vlax-curve-getEndPoint pline) pt1)) rad) ((lambda (p) (vlax-put pline 'Coordinates (append (vlax-get pline 'Coordinates) (list (car p) (cadr p))) ) (setq circle (vla-AddCircle space (vlax-3d-point p) (- rad (vla-get-Length pline)) ) ) ) (trans pt1 1 0) ) ((lambda (p) (vlax-put pline 'Coordinates (append (vlax-get pline 'Coordinates) (list (car p) (cadr p))) ) (setq break T) ) (trans (polar pt0 (angle pt0 pt1) (- rad (vla-get-Length pline))) 1 0) ) ) (if (< (distance pt0 pt1) rad) ((lambda (p0 p1) (setq pline (vlax-invoke space 'AddLightWeightPolyline (list (car p0) (cadr p0) (car p1) (cadr p1)) ) ) (setq circle (vla-AddCircle space (vlax-3d-point p1) (- rad (distance pt0 pt1)) ) ) ) (trans pt0 1 0) (trans pt1 1 0) ) ((lambda (p0 p1) (setq pline (vlax-invoke space 'AddLightWeightPolyline (list (car p0) (cadr p0) (car p1) (cadr p1)) ) ) (setq break T) ) (trans pt0 1 0) (trans (polar pt0 (angle pt0 pt1) (- rad (vla-get-Length pline))) 1 0) ) ) ) (setq pt0 pt1) ) ) ) (*error* nil) )
-
Programme Edit_bloc.VLX qui ne fonctionne pas sur autocad 2022
(gile) a répondu à un(e) sujet de fiesta13310 dans AutoCAD 2020-2024
Sinon, sans faire de désinstallation, il suffit de renommer le dossier LayLockSel.bundle (en modifiant ou supprimant "l'extension" : '.bundle') pour qu'il ne soit plus automatiquement chargé au démarrage. -
Programme Edit_bloc.VLX qui ne fonctionne pas sur autocad 2022
(gile) a répondu à un(e) sujet de fiesta13310 dans AutoCAD 2020-2024
Comme dit plus haut, le message d'erreur dit qu'il y a un problème avec un ou des fichiers nécessaires à la désinstallation (CF les fichiers attachés plus haut). Tu peux peut-être essayer de désactiver ton antivirus le temps du remplacement des fichiers et de la désinstallation. -
Programme Edit_bloc.VLX qui ne fonctionne pas sur autocad 2022
(gile) a répondu à un(e) sujet de fiesta13310 dans AutoCAD 2020-2024
Si tu n'as pas les droits d'administrateur sur ton poste, tu ne peux pas installer/désinstaller/utiliser LayLockSel. -
tu entres RIA pour lancer la commande tu modifies ou tu valides par Entrée le rayon maximum (défaut = 30) tu spécifies le point de départ tu spécifies le (ou les) point(s) suivant(s) (obstacles) tu valides par Entrée pour avoir le rayon d'action restant (symbolisé par un cercle) retour à 4. ou Annuler pour sortir de la commande.
-
Programme Edit_bloc.VLX qui ne fonctionne pas sur autocad 2022
(gile) a répondu à un(e) sujet de fiesta13310 dans AutoCAD 2020-2024
D'après la copie d'écran du message d'erreur, il semble que l'erreur soit due au fait qu'il manque le fichier UnregisterLayLockSel.exe dans le dossier LayLockSel.bundle\Contents. Débloque (clic droit > Propriétés > Général > Débloquer) le fichier zip ci joint et colle les fichiers qu'il contient dans LayLockSel.bundle\Contents (remplacer si besoin) ça devrait réparer l'installation. LayLockSelContents.zip -
Salut, Essaye ça : ;; commande RIA ;; Simule le rayon d'action d'un RIA (defun c:RIA (/ *error* doc space radius rad startPt pt0 pt1 pts pline) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (defun *error* (msg) (and msg (/= msg "Fonction annulée") (princ (strcat "\nErreur: " msg)) ) (vla-EndUndoMark doc) (princ) ) (vla-StartUndoMark doc) (setq space (vla-get-Block (vla-get-activeLayout doc)) radius (cond ((getenv "RiaMaximumRadius")) ((setenv "RiaMaximumRadius" "30.00")) ) ) (if (setq rad (getdist (strcat "\nEntrez le rayon maximum <" radius ">: "))) (setenv "RiaMaximumRadius" (rtos rad 2 2)) (setq rad (atof radius)) ) (if (setq startPt (getpoint "\nSpécifier le point de départ: ")) (progn (vla-AddCircle space (vlax-3d-point (trans startPt 1 0)) rad) (setq pt0 startPt ) (while T (setq pt0 startPt pts nil pline nil ) (while (setq pt1 (getpoint pt0 "\nSpécifier le point suivant (ou valider): ")) (if pline ((lambda (p) (vlax-put pline 'Coordinates (append (vlax-get pline 'Coordinates) (list (car p) (cadr p))) ) ) (trans pt1 1 0) ) ((lambda (p0 p1) (setq pline (vlax-invoke space 'AddLightWeightPolyline (list (car p0) (cadr p0) (car p1) (cadr p1)) ) ) ) (trans pt0 1 0) (trans pt1 1 0) ) ) (setq pts (cons pt1 pts) pt0 pt1 ) ) (while (and pts (<= rad (vla-get-Length pline))) (if (< 4 (length (vlax-get pline 'Coordinates))) (vlax-put pline 'Coordinates (reverse (cddr (reverse (vlax-get pline 'Coordinates)))) ) (vla-Delete pline) ) (setq pts (cdr pts)) ) (if pts (vla-AddCircle space (vlax-3d-point (trans (car pts) 1 0)) (- rad (vla-get-Length pline)) ) ) ) ) ) (*error* nil) )
-
Programme Edit_bloc.VLX qui ne fonctionne pas sur autocad 2022
(gile) a répondu à un(e) sujet de fiesta13310 dans AutoCAD 2020-2024
Est-ce que LayerLockSelection apparait toujours dans le panneau de configuration ? Si c'est le cas, essaye de Réparer avant Désinstaller. S'il n'apparait plus, vérifie que le dossier : C:\ProgramData\Autodesk\ApplicationPlugins ne contient plus de dossier : LayLockSel.bundle Tu pourras ensuite essayer de télécharger et installer la dernière version. -
Programme Edit_bloc.VLX qui ne fonctionne pas sur autocad 2022
(gile) a répondu à un(e) sujet de fiesta13310 dans AutoCAD 2020-2024
Dans le Panneau de configuration > Programmes et fonctionnalités, tu dois trouver LayerLockSelection que tu peux essayer de Réparer ou Désinstaller. -
Programme Edit_bloc.VLX qui ne fonctionne pas sur autocad 2022
(gile) a répondu à un(e) sujet de fiesta13310 dans AutoCAD 2020-2024
As-tu réussi à désinstaller proprement LayLockSel via le Panneau de configuration ? -
Programme Edit_bloc.VLX qui ne fonctionne pas sur autocad 2022
(gile) a répondu à un(e) sujet de fiesta13310 dans AutoCAD 2020-2024
As-tu bien supprimer le chargement automatique des ces 3 fichiers, redémarré AutoCAD, puis essayé de les charger un par un avec APPLOAD (ou NETLOAD pour LayerLockSelection.dll qui n'est pas un LISP) afin d'essayer de déterminer lequel pose problème. -
Programme Edit_bloc.VLX qui ne fonctionne pas sur autocad 2022
(gile) a répondu à un(e) sujet de fiesta13310 dans AutoCAD 2020-2024
Essaye de supprimer le chargement automatique pour les programmes qui posent problème de façon à ce que AutoCAD démarre sans erreur, puis essaye de les charger un par un avec APPLOAD. -
Programme Edit_bloc.VLX qui ne fonctionne pas sur autocad 2022
(gile) a répondu à un(e) sujet de fiesta13310 dans AutoCAD 2020-2024
As-tu essayé de "Débloquer" ces fichiers (ou le ZIP qui les contient ? Clic doit > Propriétés > onglet Général > Débloquer (en bas). -
Programme Edit_bloc.VLX qui ne fonctionne pas sur autocad 2022
(gile) a répondu à un(e) sujet de fiesta13310 dans AutoCAD 2020-2024
Salut, Peux-tu préciser dans quelles circonstances tu as une erreur fatale. D'après les tests que j'ai fait tout fonctionne comme attendu.
