
OtObOx
Membres-
Compteur de contenus
18 -
Inscription
-
Dernière visite
Tout ce qui a été posté par OtObOx
-
Modèle C# ou VB pour Visual Studio Express
OtObOx a répondu à un(e) sujet de (gile) dans ObjectARX/DBX, C++, .NET, RealDWG
Merci pour tes encouragements et ton aide ici et sur le forum Autodesk :) Je suis assez d'accord avec toi quant à apprendre le C#, c'est plus professionnel et ça peut servir pour faire autre chose. Malheureusement, je suis resté basic depuis mon ZX81 en 1984 puis le premier système DAO sur lequel j'ai travaillé, ME10, en 1995 et mes première macros sous Excel en 2000. C'est donc tout naturellement que j'ai choisi le VB.net quand je me suis essayé sur VS 2010. J'ai fait quelques programmes, mais juste sous Windows (par exemple un truc qui va ranger les fichiers automatiquement dans l'arborescence du serveur suivant les standards du boulot) sans interactions avec des logiciels tiers, donc rien de bien compliqué. J'avais un peu laissé tombé, je suis un peu rouillé avec vb.net, mais j'ai quelques notions sur la POO et je sais que les automatismes du vba ne sont pas applicables à .net. Je verrai bien par la suite si ça vaut le coup que j'apprenne un nouveau langage. En parlant d'apprentissage de nouveau langage, j'ai téléchargé ton tuto LISP (je pense que c'est le tien) sur Exchange. Bravo, ça m'a donné l'envie d'aller plus loin ! Mais je vais essayer de ne pas courir deux lièvres à la fois, si je galère trop avec .net, j'essayerai de regarder le LISP, bien que ce langage de parenthèses et de réflexions récursives sont de premier abord repoussantes. Mais je ne doute pas que c'est un langage puissant, un paquet de programmeurs l'utilisent et en sont très satisfaits. D'autant plus que sur AutoCAD, ça a l'air de simplifier beaucoup de choses. En tous cas, c'est chouette de rencontrer des passionnés, le monde de la programmation est un monde où on se retrouve tout seul avec soi même et ses lignes de codes. Pour ma part, quand je suis sur un problème de programmation, je ne sais plus m'arrêter, après une intense séance que creusage de neurones (je suis incapable de faire un début d’algorithme, j'ai tout dans la tête) j'en sors groogy et j'y pense jusqu'à ce que j'arrive à mes fins ! Et là, c'est bon :P L'avantage avec l'époque du ZX81 et de ses 1 ko de mémoire extensibles à 32, c'est l'internet et ses forums où je peux rencontrer des personnes comme moi !!! (parce que la famille, elle n'y comprend rien !!) Encore merci :) Jean-Marc -
Modèle C# ou VB pour Visual Studio Express
OtObOx a répondu à un(e) sujet de (gile) dans ObjectARX/DBX, C++, .NET, RealDWG
Salut gile, un petit message de remerciement pour ton tuto. Je l'ai suivi à la lettre et ça fonctionne pour la config VS2013 et ACAD2015. Reste plus qu'à comprendre le reste :P et réussir à tracer un trait dans AutoCAD :) JM -
Renseignement sur des normes batiments & urbanisme
OtObOx a répondu à un(e) sujet de OtObOx dans Pause café
Merci pour vos réponses. Il y a un PLU dans ma commune et ça concerne un collège, donc à priori le département ? Je compte cependant aller voir le maire, enfin son adjoint à l'urbanisme ou l'adjoint à la voirie/espace public, mais je ne veux pas y aller avec les mains vides, je veux pouvoir lui montrer que je connais un peu le sujet et vérifier qu'il ne me roule pas dans la farine... JM -
Salut à tous, il y a un projet d'agrandissement de l'école qui est juste en face de chez moi, où il est prévu de doubler sa capacité d'accueil (passer de 250 à 570 élèves). L'entrée de cette école est situé dans une petite rue, engendrant des problèmes d'accès, de bouchons à la rentrée et sortie des classes mais aussi des problèmes de stationnement, car la trentaine de personnel (qui seront bientôt une soixantaine) travaillant dans cette école ne disposent pas de place de parking et se garent dans les rue adjacentes, ce qui fait que nous riverains, ne trouvons plus de place pour se garer quand on rentre chez nous pendant les heures de cours :angry: Le projet d’agrandissement se fait suite à un rachat de bâtiments existants qui seront rénovés en salles de classe et d'un terrain de 2000 m² adjacent où sera construit un nouveau bâtiment de 800 à 1000 m² en RdC. Alors je me demandais, si dans le cadre d'un tel projet, un quelconque règlement ou loi n'obligerait pas les promoteurs à prévoir des places de parking pour le personnel dans l'enceinte de l'établissement, histoire qu'il arrête de squatter les places des riverains. Je sais que de telles dispositions existent dans le logement, où il est exigé de prévoir au moins une place de parking + 1 garage par logement neuf. Est-ce que quelqu'un pourrait m'expliquer brièvement les obligations dans le cas qui m'intéresse ? Je bosse dans la navale, alors les normes de voirie et bâtiments... j'y connais rien :P Merci, JM
-
Oui, c'est le cas, je débute avec vb.net, mais pas en programmation. En tout cas, merci pour toutes ces pistes, je vais regarder ça pendant le week-end (oui oui, je sais ! j'ai des week-end passionnants :D) OtO
-
Merci pour ta réponse :) J'ai déjà quelques bases en programmation, mais le langage que je maitrise le mieux est le vba que j'ai utilisé sous Office, mais aussi AutoCAD et Solidworks. J'ai aussi bidouillé sous Delphi et un peu de Java. Le conseil d'apprendre l'architecture .net est certe judicieux, mais c'est maintenant que j'ai besoin de l'utiliser ! Et la meilleure façon d'apprendre est de pratiquer, et je pense que la meilleure façon de le faire, c'est de traiter des cas concrets et de résoudre les problèmes quand on les rencontre. Et petit à petit, on s'autorise à aller plus loin, être plus ambitieux. Pour l'instant, loin de moi la volonté de traiter des problèmes complexe, comme le dessin d'un escalier métallique paramétré en 3d avec sortie des pièces tôles développées, comme j'ai pu le faire avec vba. Un simple affichage d'une fenêtre Hello world me conviendrait pour le moment ! Pour l'instant, l'appli que j'ai faite sous vb.net charge le chemin (l'URL) d'un fichier quelconque sur un disque (soit par bouton Sélectionner fichier ou simplment en glissant son icone dans l'appli ou sur l'icone de l'exécutable) et après que l'utilisateur a complété des champs formatés représentant le numéro du document, copie ou déplace le fichier dans un répertoire dépendant du numéro du document. Ca fonctionne nickel, avec gestion des erreurs et compagnie :) Maintenant, ce que j'aimerais faire, c'est utiliser cette appli, qui fonctionne en "standalone" pour enregistrer le document actif d'ACAD. En gros, que le paramètres reçu par l'appli quand on glisse un icone dans le programme soit remplacé par le chemin du document AutoCAD, que l'appli détecte que ce paramètre vienne d'ACAD pour ensuite enregistrer dans le bon répertoire le dessin. J'ai déjà une idée de la procédure en tête, mais il faudrait que je puisse faire reconnaitre ce programme par AutoCAD. OtO
-
Je viens de me mettre au vb.net mais je ne trouve pas de dll à charger... J'utilise visual studio express 2010, il génère un exécutable, mais pas de DLL. Comme c'est un programme simple (genre Hello world), je n'ai pas chargé de librairie AutoCAD. Faut t-il absolument les charger pour avoir une dll exploitable par AutoCAD ? Merci, JM
-
56 vues et pas de réponse... C'est impossible à faire ? OtO
-
Bonjour, J'aimerais changer le style de texte défini dans un style de cote avec du code vba. Je pensais que ça aurait été relativement facile avec un objet de type AcadDimStyle et en accédant ensuite à ses propriétés, mais évidemment, ça ne fonctionne pas ! (il n'y a que StyleDeCote.Name qui marche... Auriez-vous un exemple pour faire ça ? Merci OtO
-
Le message date un peu, mais voilà une solution en vba : Sub test() Dim returnObj As AcadObject Dim entite As AcadEntity Dim nombloc As String Dim Bloc As AcadBlock Dim cercle As AcadCircle Dim pntCen, pntRef, pnt(0 To 2) As Double 'Sélection du bloc ThisDrawing.Utility.GetEntity returnObj, pntRef, "Sélectionner un bloc" 'Sortir de la procédure si l'entité sélectionnée n'est pas un bloc If Not returnObj.ObjectName = "AcDbBlockReference" Then Exit Sub 'Création de l'objet bloc nombloc = returnObj.Name Set Bloc = ThisDrawing.Blocks(nombloc) 'Parcourir le bloc à la recherche du cercle For Each entite In Bloc If entite.ObjectName = "AcDbCircle" Then 'Si le cercle est trouvé : Set cercle = entite 'Récupération du centre dans les coordonnées du bloc pntCen = cercle.Center 'Récupération du point d'insertion de la référence du bloc sélectionné pntRef = returnObj.InsertionPoint 'Calcul des coordonnées du centre du cercle dans l'espace courant : pnt(0) = pntRef(0) + pntCen(0) pnt(1) = pntRef(1) + pntCen(1) pnt(2) = pntRef(2) + pntCen(2) 'Résultat : MsgBox "Le centre est au coordonnées : x= " & pnt(0) & " y= " & pnt(1) & " z= " & pnt(2) 'Quitter la procédure Exit Sub End If Next End Sub
-
Au boulot, nous avons découvert par hasard que deux souris USB branchées sur le même ordinateur fonctionnaient correctement. En reprenant ton idée de fixer une souris à gauche pour le zoom, tu peux aussi garder une deuxième souris à droite pour t'en servir dans la vie de tous les jours, à moins que tu fasse tout le reste à la tablette graphique (utilisation des autres programmes tels que messagerie, excel etc.)
-
Accès aux derniers messages ?
OtObOx a répondu à un(e) sujet de OtObOx dans CADxp, comment ça marche?
OK, merci pour cette réponse rapide ! j'ai trouvé la liste et les 100 derniers messages. Mais je comprends qu'il n'y a pas possibilité d'aller directement au premier message non lu ? JM -
Bonjour à tous, J'ai cherché, sans doute mal, mais je n'ai pas trouvé : - comment fait-on pour aller à la dernière réponse non lue d'un sujet, à partir de la liste principale sur le forum ? - est-il possible d'avoir la liste des messages auxquels on a participé (un egosearch) ? (J'ai bien vu qu'il existait une liste des derniers messages postés, mais ce n'est pas ça que je cherche !) Merci, JM
-
Je relance ce post parce que c'est un sujet qui m'intéresse... Comme d'autres ici, j'applique les 2 règles énoncées par jifi, rien sur le calque 0 sauf les entitées composant les blocs. Dans le cas d'une vis, je mets tous les traits sur le calques 0 et couleur DuBloc, les contours et filets sur type de ligne DuBloc, le trait d'axe forcé sur Axe et les épaisseurs de traits de contours sur DuBloc et l'épaisseur du filet et de l'axe sur 0.2. J'ai pas trop compris la démonstration de Tramber avec ses taxis et l'avantage de faire des blocs multicouches. Mais lorsque que je dois essayer de faire comprendre les subtilités du Calque 0, des réglages DuCalque/DuBloc etc. à un collègue débutant, j'utilise des blocs avec dedans des textes du style : Ce texte est écrit en couleur DuCalque et est sur le Calque 0 Ce texte est écrit en couleur DuBloc et est sur le Calque 0 Ce texte est écrit en couleur DuCalque et est sur le Calque 1 Ce texte est écrit en couleur DuBloc et est sur le Calque 1 Ce texte est écrit en couleur Rouge et est sur le Calque 1 etc. (évidemment les attributs des différents textes sont réglé comme ils sont décrits). Après on teste les différents réglages des calques, couleurs etc. et on voit tout de suite les résultats.
-
Salut, Pour ta deuxième question données de Access vers AutoCAD, j'ai pas de solution à t'apporter, je ne pense pas que ça soit trop compliqué, mais je ne l'ai jamais fait. Pour ta première question, j'ai quelque chose : il y a quelques temps de cela, j'avais fait une macro vba sous AutoCAD 2005 qui exportait dans un base Access 97 tous les text et mtext que pouvait contenir un dessin. (les dessins étaient en anglais et j'exportais les mots en anglais pour les traduire en français. J'avais un lexique par plan et les mots qui revenaient régulièrement d'un dessin sur l'autre était traduits automatiquement au fur et a mesure que la base s'enrichissait). Dans cette base TextesDessins.mdb, il y a 3 tables : tabFichiers où sont stockés les noms et chemins des différents dessins traités. tabExpAng où sont stockés les textes extraits du dessin tabCorrespondance où sont stockés le numéro unique access (la clé de l'enregistrement de la table tabExpAng) du texte extrait du dessin Il y a aussi dans cette macro une fonction qui supprime les combinaisons de caractère tels que %%U pour indiquer souligner etc. Je commente assez abondamment mon code, j'espère que tu comprendras : Private Sub ExtractionTextes() 'Déclaration des variables : Dim sset As AcadSelectionSet 'variable du type "jeu de sélection AutoCAD" Dim gpCode(0) As Integer 'Déclaration d'une variable tableau avec 3 lignes car on a 3 critères de sélection Dim dataValue(0) As Variant 'Déclaration d'une variable tableau correspondant aux paramètres du tableau gpcode Dim groupCode As Variant Dim dataCode As Variant Dim acadObj As Variant Dim intPosition As Integer Dim strTexte As String Dim strBase As String 'Chemin vers la base de donnée Dim db As DAO.Database Dim rst As Recordset Dim rstRech As Recordset Dim rstCorr As Recordset Dim idPlan As Long Dim idExpAng As Long On Error GoTo gestErr 'Si VBA rencontre une erreur en cours d'exécution, aller au gestionnaire d'erreur 'Chemin vers la base de données strBase = "C:\Documents and Settings\Jean-Marc\Mes documents\Macros VBA\Essai layers\TextesDessins.mdb" 'Création de l'objet base de données : Set db = Nothing Set db = OpenDatabase(strBase) 'Renseignement de la base : complète la table tabPlan Set rst = db.OpenRecordset("tabFichiers") rst.AddNew rst.Fields(1) = ThisDrawing.Name rst.Fields(4) = ThisDrawing.FullName 'Lecture du idPlan nouvellement créé : idPlan = rst.Fields(0) 'Enregistrement du recordset rst.Update 'Fermeture du recordset rst.Close Set rst = Nothing 'Creation du jeu de sélection "JeuSel1" 'Si le jeu de sélection "JeuSel1" existe déjà, il y aura une erreur: 'VBA ira sur le gestionnaire d'erreur avant de revenir à la ligne suivante Set sset = ThisDrawing.SelectionSets.Add("JeuSel") 'Sélection des textes simple ligne gpCode(0) = 0 'Type de sélection : 0= entité dataValue(0) = "TEXT" 'Type d'entité : Texte simple groupCode = gpCode dataCode = dataValue sset.Select acSelectionSetAll, , , groupCode, dataCode 'Puis ajout à la sélection des textes multilignes gpCode(0) = 0 'Type de sélection : 0= entité dataValue(0) = "MTEXT" 'Type d'entité : Texte multiligne groupCode = gpCode dataCode = dataValue sset.Select acSelectionSetAll, , , groupCode, dataCode 'Ouvre les objets recordsets : Set rst = db.OpenRecordset("tabExpAng") Set rstCorr = db.OpenRecordset("tabCorrespondance") 'Parcourir la sélection pour extraire le texte For Each acadObj In sset strTexte = acadObj.TextString If Left$(strTexte, 2) = "{\" Then 'Signe d'un texte multi intPosition = TInstrRev(strTexte, ";") strTexte = Mid$(strTexte, intPosition + 1, Len(strTexte) - intPosition - 1) End If If Left$(strTexte, 2) = "%%" Then 'Zapper le %%x indiquant un soulignement ou autre habillage de texte strTexte = Right$(strTexte, Len(strTexte) - 3) End If If Not IsNumeric(strTexte) Then 'Vérifier que l'expression n'existe pas dans la table ExpAng: Set rstRech = db.OpenRecordset("tabExpAng", dbOpenDynaset) rstRech.FindFirst ("ExpAng = '" & strTexte & "'") If rstRech.NoMatch Then 'Si l'expression n'est pas dans la table rst.AddNew rst.Fields(1) = strTexte idExpAng = rst.Fields(0) rst.Update 'Mettre à jour la table des correspondances : rstCorr.AddNew rstCorr.Fields(1) = idPlan rstCorr.Fields(2) = idExpAng rstCorr.Update Else 'Sinon, ne complèter que la table des correspondances rstCorr.AddNew rstCorr.Fields(1) = idPlan rstCorr.Fields(2) = rstRech.Fields(0) rstCorr.Update End If rstRech.Close End If Next acadObj 'Fermeture des rst rst.Close rstCorr.Close 'Avant de quitter la procédure, on efface l'objet "sset" Set sset = Nothing 'puis on efface le jeu de sélection de la mémoire : ThisDrawing.SelectionSets.Item("JeuSel").Delete 'Fermeture de la base access db.Close 'Et effacement de la mémoire de l'objet Access Set db = Nothing 'Fin de l'exécution ici : Exit Sub 'On quitte la procédure gestErr: 'Ici commence le gestionnaire d'erreurs If err.Number = -2145320851 Then 'Si le code d'erreur correspond à celui d'un jeu de sélection déjà existant ThisDrawing.SelectionSets.Item("JeuSel").Delete 'Alors on efface le jeu de sélection de la mémoire Set sset = ThisDrawing.SelectionSets.Add("JeuSel") 'Puis on recrée un nouveau jeu de sélection Resume Next 'Et on repart à la ligne qui suit celle qui a engendré l'erreur Else 'Sinon MsgBox err.Number & " : " & err.Description 'indiquer le code d'erreur et sa description Exit Sub 'puis quitter la procédure End If End Sub Private Function TInstrRev(Texte As String, cherche As String, _ Optional Start As Integer = 0, _ Optional Comparaison As Integer = vbTextCompare) _ As Integer On Error GoTo err If Start < 1 Then Start = Len(Texte) Texte = Right(Texte, Start) While InStr(TInstrRev + 1, Texte, cherche, Comparaison) > 0 TInstrRev = InStr(TInstrRev + 1, Texte, cherche, Comparaison) Wend Exit Function err: MsgBox "Vérifier vos paramètres", vbCritical, "Fonction TInstrRev" End Function J'ai aussi quelque part dans mes backup un code qui permet à partir d'Access d'ouvrir un dessin AutoCAD et parcourir les blocs à la recherche de blocs définissant des cartouches, puis récupérer leurs attributs pour les stocker dans une table. Si ça t'intéresse, fais moi signe. Bonne chance JM
-
Si la table est faite sous Access, le plus simple à mon avis est de mettre dans le champ "Affaire" la propriété "Sans doublon". Ensuite, gérer par "On error goto" sous AutoCAD et tester le numéro de l'erreur retournée. Il y a aussi une solution dans le code donné sur ce message 'Vérifier que l'expression n'existe pas dans la table ExpAng: Set rstRech = db.OpenRecordset("tabExpAng", dbOpenDynaset) rstRech.FindFirst ("ExpAng = '" & strTexte & "'") If rstRech.NoMatch Then 'Si l'expression n'est pas dans la table rst.AddNew A replacer dans le contexte ! [Edité le 20/11/2008 par OtObOx]
-
Waff ! 51 vues et pas une réponse ! Ma demande est si incongrue que cela ? Personne pour me répondre ou apporter un début de piste ? JM
-
Bonjour, je recherche des exemples de codes en VB(a) pour accèder à un fichier AutoCAD (2005) et lire les attributs de blocs. On trouve pleins d'exemples inverses: ACAD est ouvert et on exporte les attributs vers Excel ou Access. Mais comment faire, à partir d'Excel ou Access, importer les attributs ? L'idée est de pouvoir remplir un cahier de plans sous Excel sans devoir saisir le nom du plan, le numéro, l'indice etc. à la main, mais en récupérant les valeurs des attributs du bloc "cartouche". Tous conseils et retours d'expérience bienvenus... merci, Jean-Marc