-
Compteur de contenus
4 029 -
Inscription
-
Dernière visite
-
Jours gagnés
21
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par DenisHen
-
Salut à la communauté. As-tu essayé RBLOC de Patrick_35 ?
-
Dessiner une polyligne, mais avec un arc de cercle...
DenisHen a posté un sujet dans Débuter en LISP
Bonjour à la communauté... Voilà, aujourd'hui, je cherche à dessiner une polyligne, mais je n'arrive pas a faire les arcs de cercle. Pour info (voir image), l'utilisateur saisie les trois points de base, en magenta (PtA, PtB et PtC), ensuite, il tape ce qu'on appelle les "enrobages" (un getreal), qui sont représentés par les "5" en rouge, c'est du centimètres, puis le prolongement, les 8.5, qui seront calculés selon le type de polyligne. L'angle aussi peut changer, il sera saisi aussi en getreal aussi, mais il sera toujours entre 180° (demi-tour) et 90° (droit)... Pour toutes ces données saisies (les getreal) je pense faire un petit DCL, pour les enregistrer dans le dessin, car on peut en avoir des dizaines à saisir... Le diamètre de l'arc est un calcul qui oscille entre 6 et 16 centimètre, environ, toujours selon le type de polyligne... Ce sont des barres d'armatures dans des murs en béton armé ou en parpaing... Le truc que je ne n'arrive pas à faire, c'est l'arc de cercle... Je pense qu'il faudrait calculer les point de couleur cyan (Pt1a, Pt2a...) avant des dessiner la polyligne... Mais je n'en suis pas certain... Si quelqu'un a une solution, un exemple, une astuce... Je suis preneur... Bien à toi la communauté... Denis... -
Ok, merci (gile), je commence à comprendre l'utilité ou du moins, la différence entre un Function et un Sub. Bien que... Tu as raison, je fonctionne comme tu le suppose dans ta proposition, je n'envoi que des ordres (Sub) et je n'ai jamais besoin de réponses (Function). Je vais avaliser ta réponse pour en sortir sa substantifique moelle. Encore un grand merci à toi pour tout ton aide gracieuse et précieuse... Mais j'ai des heures de réflexion... Je vais dollipraner mes exercices à venir... Encore merci pour ton aide, tellement précieuse, même pour une dernière fois... Denis...
-
Un grand merci à toi (gile), je prends toujours tes remarques et commentaires très au sérieux, raison pour laquelle je me coltine des pages et des pages d'explications plus compliquées les unes que les autres sur les dictionnaires depuis deux semaines... Étant habitué aux Sub, je ne comprends pas réellement l'intérêt d'un Function pour avoir une réponse en retour, alors que j'envois un "ordre" avec un Sub et pas une "question" comme avec un Function, La seule réponse à laquelle je m'attendrai, éventuellement, c'est "OK" ou "PasOk". Je ne comprends pas encore l'intérêt de lancer une procédure qui devrait marcher seule pour en attendre une réponse, pour en faire quoi ? Je comprendrais pour un calcul et en avoir le résultat. Un Function qui ajouterais la TVA ou enlèverais un pourcentage d'enrobage par exemple... Je compare ma pensée avec une commande AutoCAD (si tu le permets), je créé un calque en ligne de commande avec "-calques"... Ai-je besoin d'une réponse ? Par contre, je l'ai bien remarqué en Lisp, les appels de procédure avec arguments, c'est génial, mais en VBA, il y a une grande différence, je trouve. Mais comme je l'ai déjà dis, peut-être suis-je à mon maximum... Suis-je con, ou tout simplement bête ? ? ? En Lisp, tu lances un defun avec parfois des arguments (je ne le fais presque jamais, j'utilise toujours des vlax-ldata pour dialoguer entre mes différentes commandes), mais je pense que ce doit être la même chose en VBA. Tu dis qu'un Function est plus facile à gérer qu'un Sub. Je vais le découvrir, car je vais chercher... Encore un grand merci à toi... Denis...
-
Bonjour (gile), oui, je l'ai essayé. Mais j'ai du mal avec les Function, je n'utilise que des Sub. J'ai surement tord, mais j'ai appris comme-ça, désolé... C'est peut-être pour ça que je n'y arrive pas, j'ai essayé de transformer ton code en ma façon de travailler. En gros, j'essaye de faire deux Sub : - création du filtre "principal", - création d'un sous-filtre, qui peux être un sous-sous-filtre... Je ne m'en sors pas vraiment, pourtant, ça fait deux semaines que je manges des "dictionnaire" AutoCAD en PDF, sur des sites... Je suis peut-être au bout de mes facultés intellectuelles... 😉 En tous cas, merci pour ton aide...
-
Bonjour à tous. Je me suis remis sur mon problème. J'ai bien compris l'arborescence à adopter, que j'ai d'ailleurs fais évoluer : |-Rdc |-Rdc-Coupes |-Rdc-Coupes-Murs |-Rdc-Coupes-Cloisons |-Rdc-Plans |-Rdc-Plans-Murs |-Rdc-Plans-Cloisons |-1er |-1er-Coupes |-1er-Coupes-Murs |-1er-Coupes-Cloisons |-1er-Plans |-1er-Plans-Murs |-1er-Plans-Cloisons Mais je n'arrive pas à créer le premier sous filtre. Je ne comprends pas très bien les dictionnaires, même après la lecture de plusieurs documentations (PDF, sites...)
-
Bonsoir (gile). J'ai regardé sur mon poste et j'ai essayé d'installé FrameWork 4.8, Windows m'a dit qu'une version plus récente était déjà installée. D'après toi, je dois rechercher un autre FrameWork ? Car j'ai testé les DLL en réseau ET en local... Et merci pour ton aide... Denis...
-
Ben revoilà... Mise à jour Windows et hop, ça ne fonctionne plus...
-
Ben voilà. Mon PC a planté, j'ai redémarrer et hop, ça fonctionne... Je n'explique pas... La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi ! (Albert EINSTEIN)
-
Bonjour à la communauté. J'ai un nouveau poste et j'ai réussi à tout installer sur mon AutoCAD 2022, sauf ExcelAttribut_19.dll. Voici la réponse d'AutoCAD lors du chargement de la DLL : "Commande: NETLOAD Impossible de charger l'assemblage. Détails de l'erreur: System.IO.FileLoadException: Impossible de charger le fichier ou l'assembly 'file:///C:\Opale-BET\ExcelAttribute_19.dll' ou une de ses dépendances. L'opération n'est pas prise en charge. (Exception de HRESULT : 0x80131515) Nom de fichier : 'file:///C:\Opale-BET\ExcelAttribute_19.dll' ---> System.NotSupportedException: Tentative de chargement d'un assembly à partir d'un emplacement réseau qui aurait entraîné l'utilisation de l'assembly en mode Bac à sable (sandbox) dans les versions antérieures du .NET Framework. Cette version du .NET Framework n'activant pas la stratégie CAS par défaut, ce chargement peut être dangereux. Si ce chargement n'est pas destiné à utiliser l'assembly en mode Bac à sable (sandbox), activez le commutateur loadFromRemoteSources. Pour plus d'informations, consultez http://go.microsoft.com/fwlink/?LinkId=155569. à System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) à System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) à System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark) à System.Reflection.Assembly.LoadFrom(String assemblyFile) à Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName) à loadmgd()". Sachant que je suis admin du poste, que je n'ai pas l'option "Débloquer" dans les propriétés du fichier et que "ExcelDynamic.dll" est dans le même répertoire que ExcelAttribut_19.dll. Je suis sous Windows 10 Pro "21H1". J'ai aussi d'autres DLL qui ont le même problème. J'ai donc installer Micro$oft .NET Core Runtime 3.1.10.29419. Rien n'y fait. Quelqu'un aurait des suggestions à me proposer ? Denis...
-
Salut Luna, et merci de me m'aider. Ben cha alors ! ! ! Je vais donc "développer" en conséquence. Mais je suis d'accord, c'est stupide... Après, c'est peut-être un méli-mélo entres dictionnaires... Encore merci... Denis...
-
Bonjour (gile) et mille mercis pour ton aide. Je regarderais ça plus tard, on est plus que débordé en ce moment... Peux-tu me confirmer ce que disait Gégé plus haut : "Une chose très importante à savoir : chaque nom de filtre ou sous filtre doit être unique." ? Pour les filtres, je conçois, mais pour les sous-filtres ? Exemple : |-Rdc |--Murs |--Cloisons |-1er |--Murs |--Cloisons |-2ème |--Murs |--Cloisons Encore un super grand merci à tous... Denis...
-
Salut Gégé, et merci pour ton aide. Je vais donc aller voir le site de Gile pour télécharger cette DLL, je pense y trouver sa dernière version. Encore un grand merci à la communauté. Denis...
-
Bonjour à tous, et merci pour votre aide. J'ai essayé de mettre tout ça en VBA, mais je n'ai pas réussi... Étant très mauvais en "Dictionnaire", je ne m'étonne pas... Encore merci à vous... Denis...
-
Bonjour à la communauté. Il y a quelques temps, ce forum m'avait sauvé la vie avec ce code, pour créer un filtre de calques. Public Sub CreaFiltre(NomFiltre As String) 'Création de filtres ********************************************** Dim Dict1 As Object Dim Dict2 As Object Dim DaRec As Object Dim DaType(0 To 6) As Integer Dim DaValue(0 To 6) As Variant If NomFiltre <> "" Then DaType(0) = 1: DaValue(0) = NomFiltre DaType(1) = 1: DaValue(1) = NomFiltre & "*" DaType(2) = 1: DaValue(2) = "*" DaType(3) = 1: DaValue(3) = "*" DaType(4) = 70: DaValue(4) = 0 DaType(5) = 1: DaValue(5) = "*" DaType(6) = 1: DaValue(6) = "*" Set Dict1 = ThisDrawing.Layers.GetExtensionDictionary Set Dict2 = Dict1.AddObject("ACAD_LAYERFILTERS", "AcDbDictionary") Set DaRec = Dict2.AddXRecord(NomFiltre) DaRec.SetXRecordData DaType, DaValue End If End Sub Et il fonctionne à merveille ! ! ! Mais maintenant, je me retrouve avec trop de filtres, j'aimerais donc créer des "sous-filtres". Et des "sous-sous-filtres" Comme : Denis1 -Denis2 -Denis3 Avec un Sub comme ceci, je pense : Public Sub CreaFiltre(NomFiltre As String, NomFiltreParent As String) ... ... End Sub Par exemple, le filtre "Denis2" serait un "sous-filtre" de "Denis1", un peu comme l'arborescence des répertoires... J'ai cherché "ACAD_LAYERFILTERS", mais là Google n'était pas mon ami... Si quelqu'un a une astuce, un conseil... Je suis preneur... Bien à toi la communauté... Denis...
-
Je ne sais pas trop quoi dire... On m'a conseillé une fonction... Ne devrais-je pas ? Je n'ai pas tout saisis... Je découvre le VBA dans AutoCAD...
-
@(gile): je suis bien d'accord avec toi, mais là, ça me parait pointu, et j'ai cru comprendre, dans l'exemple anglais, qu'on créait un attribut après avoir créer le bloc. Généralement, je m'en sors en anglais (j'ai plusieurs langues natales (dont le Ch'ti), mais l'anglais n'en fait pas parti), mais là, j'avoue être perdu... Ce qu'il serait judicieux, c'est qu'AutoDesk fasse des aides dans toutes les langues... Et pas que pour les anglophones... Cela dit, bonne soirée à toi et à la communauté... Denis...
-
Merci pour votre aide. J'ai donc écris ceci dans mon UserForm : InsBlk = ThisDrawing.Utility.GetPoint(, vbCr & "Point d'insertion de la semelle : ") RotBlk = ThisDrawing.Utility.GetAngle(InsBlk, vbCr & "Rotation de la semelle : ") Set BlkRefObj = ThisDrawing.ModelSpace.InsertBlock(InsBlk, "SemelleIsoléePlan.dwg", TxtLong.Value, TxtLarg.Value, 1, RotBlk) Temp = MajAttrib("LONG", TxtLong.Value) Et une fonction (😉) dans un module : Public Function MajAttrib(Attribut As String, Text As String) For Each ATT In BlkRefObj.GetAttributes If ATT.TagString = Attribut Then ATT.TextString = Text Exit For Else End If Next ATT End Function Mais VBA bloque au "For Each ATT", "Objet requis"... @(gile): je suis désolé, mais je n'ai absolument rien compris dans l'aide AutoCAD "GetAttributes Method (ActiveX)" qui est en anglais.
-
Bonjour à la communauté. Voilà, j'ai réussi à insérer un bloc, mais je ne sais pas comment "remplir" ses attributs selon des TextBox qui sont dans mon UserForm. Si quelqu'un a une astuce, un conseil, une idée, je suis preneur... Denis...
-
Créer une hachures dans un bloc inséré.
DenisHen a répondu à un(e) sujet de DenisHen dans AutoCAD 2020-2024
Merci à tous pour votre aide. Je pense avoir trouvé une autre solution, mais je ne sais pas encore si elle est correcte. -
Créer une hachures dans un bloc inséré.
DenisHen a répondu à un(e) sujet de DenisHen dans AutoCAD 2020-2024
Merci @Luna, je coirs bien que c'est ça, et je l'avais oublié... Mais je n'ai pas envi de décomposer le bloc. -
Comment demander une distance, soit par saisie numérique, soit en deux clics ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonjour (gile) et merci pour ta réponse. Je suis en déplacement, et à mon gîte, j'ai une connexion plus que nulle. En fait, j'avais trouvé peu de temps après avoir posté, mais sans connexion, je n'ai pas pu vous en faire part. -
Créer une hachures dans un bloc inséré.
DenisHen a répondu à un(e) sujet de DenisHen dans AutoCAD 2020-2024
Bonjour (gile) et merci pour ta réponse. Mais je ne cherche pas à modifier mon bloc, je cherche juste à créer une hachure hors du bloc dans la polyligne du bloc. -
Bonjour à la communauté. Je cherche aujourd'hui à demander à l'utilisateur de mon futur Lisp une distance. Deux options s'offrent alors : la saisie via le clavier, la saisie via deux clics. Je peut disposer des coordonnées du premier "clic" pour la distance à la souris. Je ne sais même pas par quoi commencer. Si quelqu'un a une astuce, un conseil, une idée, un bout de code. Je suis preneur. Bien à toi, la communauté. Denis...
-
Bonjour à la communauté. Voilà, je n'arrive pas à créer une hachure dans un bloc inséré qui n'est qu'une polyligne (à des échelles parfois différentes, mais pas en Z). Je suis certain que ça dépend d'une variable, mais je n'ai rien trouvé. Bien à toi la communauté... Denis...
