-
Compteur de contenus
1 013 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par sechanbask
-
le plus simple c'est d'aller ici : http://www.cadxp.com/sujetXForum-16438.htm. Pour l'instant le code n'est utilisable que par moi, j'avais pas vu une erreur et personne n'a oser me le dire... Je vais le déboguer dans la journée de demain si tout va bien alors je t'enverrais un message prive pour te prévenir des modifications. J'ai mis à jour cette macro mais il reste encore un peu de boulot... [Edité le 8/9/2007 par sechanbask]
-
pourquoi ne pas faire un bloc dynamique et faire une échelle sur l'attribut avec une table de consultation sur l'échelle de sortie du projet? sinon, je pense qu'en VBA c'est également possible mais il faudrait connaitre le nom de l'attribut...
-
ça ne me parait pas très clair mais c'est sans doute parce que je suis en vacances. YOUPI !!!!!!!!! J'ai pas dû bien comprendre le problème du coup je comprends pas bien la solution...
-
Quand je ne trouve pas de solution, je m'éloigne et je cherche à faire autrement...
-
ça ne serait pas possible de faire des palettes qui s'auto régénèrent toutes les semaines... avec un assistant autonome de mise à jour type fullsync disponible ici : http://www.framasoft.net/article4281.html... Personnellement j'utilise un autre logiciel pour mes sauvegardes mais là il s'agit de l'opération à l'envers.
-
lili2006, tu ne trouves pas les palettes outils suffisamment puissantes ? Ne t'enerve pas c'est juste une question...
-
j'ai rien compris à la méthode de Maximilien... mais si tu y trouves ton compte... Moi ça me fait un bloc dynamique à une seule vue mais X visibilité...je trouve ça super simple
-
Le chemin de tes fichiers sont ils déclarer dans autocad ? outil, option, fichiers
-
quand tu est sous windows, dans l'explorateur du fichier tu vois peut-être l'ancien nom alors essaie de faire F5 pour actualiser le nom des fichiers... c'est peut être un problème windows ou sur ton serveur... Si ce n'est pas ça essaie de faire une récuperation de ton fichier, il est peut-être corrompu . dans un fichier vierge tapes RECUPERER puis selection le fichier en question, autocad va contrôler les données et voir s'il n'y a pas une différence entre les codes DXF et la base de donnée DWG.
-
On peut faire plusieurs états de visibilités avec exactement la même vue... si c'est ce que tu cherches. L'état des vues est récupérable via une routine, ainsi que les attributs...
-
REGEN des poignées dynamiques
sechanbask a répondu à un(e) sujet de sechanbask dans Pour aller plus loin en LISP
Quelqu'un a un idée VBA ou LISP pour changer l'unité du bloc car même si je sais faire, j'ai pas vraiment le temps... merci d'avance -
REGEN des poignées dynamiques
sechanbask a répondu à un(e) sujet de sechanbask dans Pour aller plus loin en LISP
mon problème se passe souvent lors d'une copie d'un fichier à un autre. L'objet de destination ne possède plus les caractéristiques dynamiques. Il garde les caractéristiques du bloc copié et les poignées ont disparues. "Réinitialiser le bloc" lui redonne la visibilité par défaut mais les poignée sont toujours absentes. setq ent (car (entsel))) ça me donne : (sssetfirst nil (ssadd ent)) me sélectionne le bloc qui porte le nom précédent et ça me renvoi (nil ) si je mets le 2 lignes de code en même temps ça me donne l'erreur suivante : "Attend un point ou Dernier" merci beaucoup de tenter de m'aider P.S. si je copie à nouveau le bloc nouvellement arrivé sur mon plan pour en mettre un nouveau, les poignées sont existantes pour le nouveau bloc. Le problème c'est que j'ai inséré 200 ou 300 de ses blocs dynamiques (radiateurs) sur 3 ou 4 plans avec une méthode VBA. Ces blocs sont sur le nom des pièces (attributs) et maintenant, je dois déplacer et ou retourner le radiateur pour le mettre le long des fenêtres et vu que les blocs perdent leur poignée dynamique, c'est un peu con si par exemple je dois changer la longueur du radiateur (paramètre visibilité)... -
Si on utilise une application externe EXCEL avec VBA ou VB.NET peut-on programmer autocad ? Est-ce légal ? Est-ce que les bibliothèque sont les mêmes ?
-
Bonjour à tous, Est-il possible de faire réapparaitre les poignée dynamique sur autocad 2006, qui s'évaporent lorsque que l'on copie le bloc ou quand on lui fait une rotation classique (non dynamique) ? Le SP1 aurait dû corriger ça mais ... Ce sujet a été maintes fois abordés mais j'ai pas trouvé la solution. Merci d'avance
-
oui je sais, j'ai déjà eu le message... car je souhaitais enlever le menu et le remplacer par un que j'aurai pu modifier.
-
Bon je vous envoie un bout du code directement sur le .dvb ici présent : http://cjoint.com/?ixwL6xmEAN ce n'est que le début mais il faut bien un début...
-
j'ai eu les mêmes envies que toi, mais je n'ai pas trouvé la solution... alors je me suis tourné vers les type de ligne avec du texte à l'intérieur...
-
Voici un bout de l'aide d'autocad : si ça peut t'aider : Sub Example_GetPoint() 'cet exemple recupère les coordonnées du point choisi Dim returnPnt As Variant ' Return a point using a prompt returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ") Debug.Print returnPnt(0), returnPnt(1), returnPnt(2) MsgBox "Les coordonnées du point choisi sont X : " & returnPnt(0) & " Y : " & returnPnt(1) & " Z : " & returnPnt(2) & ". Ces données sont inscrites dans la fenêtre d'éxecution de VBA avec la méthode debug.print ." End Sub
-
Si tu veux changer un menu dans le cui, il faut aller sélectionner le profil à modifier et aller dans personnaliser l'espace de travail (sur le volet de droite) puis on ajoute les menu et ou les barre d'outils... Moi j'ai aucun problème sauf avec le cui de FISACAD car avec FISACAD tout est merdique...
-
Je ne connais pas de didacticiel. Il faut chercher des ressources sur : -ce forum quand tu as un truc qui coince, tu demandes ici on aide très souvent... -dans des livres... -sur le net : http://www.developpez.com/, http://www.vbfrance.com/ -la touche F2 donne les bibliothèques de méthodes-objet Pour ma part le livre http://www.editions-eyrolles.com/Livre/9782212115970/programmer-autocad-avec-diesel-autolisp-dcl-et-vba ma bien aider pour débuter, mais maintenant, il est un peu light au bout d'un an (je ne comprends rien en lisp.. pour l'instant). J'ai entendu parler d'un super bon livre, mais maintenant j'utilise l'aide autocad + les forums anglophone... J'ai commencé petit par un fenêtre qui me donnait le dimensionnement pour des gaine (je travaille dans un be fluide), maintenant ce projet permet d'inscrire, où l'on veut, le texte du dimensionnement. Maintenant je fait avancer un projet pour insérer des blocs dynamique de radiateurs dimensionnés sur le nom des pièces (attribut). Le radiateur prend la visibilité selon le dimensionnement inscrit sur une feuille excel... tout un programme... Bon courage. Si tu as besoin d'aide, et malheureusement, si je ne suis pas trop débordé, je serais ravi de te filer un coup de main si je le peux.
-
Extraction d\'attibuts dblocs dynamiques
sechanbask a répondu à un(e) sujet de serge77 dans AutoCAD 2006
J'ai peut être ce que vous souhaitiez... le sujet est vieux mais il n'est peut-être pas résolu pour vous. allez voir ici :http://www.cadxp.com/sujetXForum-16438.htm -
Tableau attribut (constant et classique) de bloc + propriétés dynamiques
sechanbask a posté un sujet dans Routines VBA
En fusionnant quelques codes (aide autoccad + http://www.cadforums.net/ftopic5694.html et http://www.cadtutor.net/forum/archive/index.php/t-14130.html) est en grattant là où ça fait mal : Principe de foncitonnement: Autocad est l'interpréteur de la macro Algorithme : (à décrire quand j'aurais du temps) /Algorithme J'ai mis dans la nom des colonnes un (*) pour indiquer que l'attribut est constant, c'est pour une future importation pour éviter de faire n'importe quoi... Il reste des choses à faire tel que : [surligneur]-ajout des coordonnées, des échelles, de la rotation et du calques[/surligneur] [surligneur]-choix utilisateur sur la fermeture ou non du fichier Excel à la fin de la procédure[/surligneur] -filtrer au début les entités afin de gagner du temps sur les boucles ?; -ajout d'attribut possible pour créer un nouvel attribut dans le bloc (pas facile surtout si l'attribut est visible); -connaitre les coordonnées des blocs sans avoir à rajouter un attributs (champs) dans les blocs; -rajouter le calque du blocs; -choix du tableur : Excel, OOO, ou données tubulées; -gérer l'erreur lorsque le fichier existe et qu'il est déjà ouvert: ne pas le ouvrir un nouveau classeur et tenter d'enregistrer dessus, mais trouver le classeur dans les documents ouverts effacer la feuille et mettre les données dessus; et enregistrer à la fin; -permettre à l'utilisateur de choisir un ou plusieurs dessins ouverts ou non pour en faire l'exportation; -faire le code inverse pour que ce soit Excel qui fasse le boulot... comme ça le code sera utilisable par les Version LT... -faire la même chose pour open office... et faire le code inverse... Macro version 0.2: Testé pour 2006 et 2008... à vous de faire le test et de me dire si ça marche pour d'autres versions. Modifications notables : voir les éléments surlignés dans la liste des souhaits. ajout d'un forme donc la totalité du programme et disponible ici : http://cjoint.com/?jkrk6lFXd5 le code du module Sub lance_test() Load TL_choix TL_choix.Show End Sub Sub ExtractionVersTableur() Dim X As Integer Dim U As Integer Dim p As Integer Dim PointXYZ As Variant Dim Nomcolonne As String Dim Ent As AcadEntity Dim AutocadApp As AcadApplication Dim strNumeroVersion As String Set AutocadApp = GetObject(, "AutoCAD.Application") strNumeroVersion = Left(AutocadApp.Version, 4) Debug.Print strNumeroVersion '-------EXCEL Dim Excelobj As Excel.Application Dim ExcelobjWorkbook As Excel.Workbook Dim ExcelobjSheet As Excel.Worksheet '------------ On Error Resume Next 'capture l'objet autocad en tant qu'application Set Excelobj = GetObject(, "Excel.Application") If Err <> 0 Then Err.Clear 'si l'objet n'existe pas, c'est que l'application n'est pas lancée, donc création de l'objet Set Excelobj = New Excel.Application If Err <> 0 Then MsgBox "La macro n'a pu ouvrir Excel!" & Err.Number & Err.Description, vbExclamation Err.Clear End End If End If On Error GoTo gestionEx 'il serait bien de ne pas tenter de ré-ouvrir le fichier s'il est déjà ouvert voir gestionEX n° 1004 Dim sngNbFeuille As Single sngNbFeuille = Excelobj.SheetsInNewWorkbook 'les nouveaux classeur comporteront une feuille Excelobj.SheetsInNewWorkbook = 1 'crée un nouveau classeur Set ExcelobjWorkbook = Excelobj.Workbooks.Add Set ExcelobjWorkbook = Excelobj.ActiveWorkbook 'rend visible l'application If TL_choix.CheckBox1 = True Then Excelobj.Visible = False Excelobj.ScreenUpdating = False Else Excelobj.Visible = True Excelobj.ScreenUpdating = False End If 'récupère la feuille active Set ExcelobjSheet = Excelobj.ActiveSheet 'l'enregistre dans le dossier par défaut sous Attribute.xls On Error Resume Next ExcelobjWorkbook.SaveAs "Propriétés des blocs et attributs.xls" If Err = 1004 Then MsgBox "déjà ouvert", vbExclamation Excelobj.ScreenUpdating = True Err.Clear End If On Error GoTo gestionEx 'supprimer cette colonne pour les versions sans bloc dynamique ExcelobjSheet.Cells(1, 1).Value = "Dynamique?" ExcelobjSheet.Cells(1, 2).Value = "Nom du bloc utilisateur" ExcelobjSheet.Cells(1, 3).Value = "Nom du bloc autocad" ExcelobjSheet.Cells(1, 4).Value = "Handle" ExcelobjSheet.Cells(1, 5).Value = "OwnerID" ExcelobjSheet.Cells(1, 6).Value = "ObjectID" ExcelobjSheet.Cells(1, 7).Value = "Position X" ExcelobjSheet.Cells(1, 8).Value = "Position Y" ExcelobjSheet.Cells(1, 9).Value = "Position Z" ExcelobjSheet.Cells(1, 10).Value = "Rotation" ExcelobjSheet.Cells(1, 11).Value = "Calque" ExcelobjSheet.Cells(1, 12).Value = "Echelle X" ExcelobjSheet.Cells(1, 13).Value = "Echelle Y" ExcelobjSheet.Cells(1, 14).Value = "Echelle Z" X = 0 Dim strNomPlan As String strNomPlan = ThisDrawing.Name ExcelobjSheet.Name = strNomPlan 'cherche parmi les entités de l'espce objet For Each Ent In ThisDrawing.ModelSpace 'si l'entité est un bloc If Ent.ObjectName = "AcDbBlockReference" Then X = 1 + X 'enregistrer l'entité en tant que IAcadBlockReference2 ou 'IAcadBlockReference pour les versions sup à 2006 Dim oBkRef As IAcadBlockReference 'enregistrer l'entité en tant que IAcadBlockReference2 Select Case strNumeroVersion Case 16.2 sautfunction Case Else Set oBkRef = Ent End Select 'si l'entité est un bloc dynamique If oBkRef.IsDynamicBlock = True Then 'récuperer dans v les propriétés dynamiques Dim v As Variant v = oBkRef.GetDynamicBlockProperties For p = LBound(v) To UBound(v) Dim oDynProp As AcadDynamicBlockReferenceProperty Set oDynProp = v(p) 's'il y a plusieurs propriétés dynamiques If IsArray(oDynProp.Value) Then Dim J As Long For J = LBound(oDynProp.Value) To UBound(oDynProp.Value) 'remplir les intitulés des colonnes supplémentaires ExcelobjSheet.Cells(X + 1, 1).Value = "Oui" ExcelobjSheet.Cells(X + 1, 2).Value = oBkRef.EffectiveName ExcelobjSheet.Cells(X + 1, 3).Value = oBkRef.Name ExcelobjSheet.Cells(X + 1, 4).Value = oBkRef.Handle ExcelobjSheet.Cells(X + 1, 5).Value = oBkRef.OwnerID ExcelobjSheet.Cells(X + 1, 6).Value = oBkRef.ObjectID PointXYZ = oBkRef.InsertionPoint ExcelobjSheet.Cells(X + 1, 7).Value = PointXYZ(0) ExcelobjSheet.Cells(X + 1, 8).Value = PointXYZ(1) ExcelobjSheet.Cells(X + 1, 9).Value = PointXYZ(2) ExcelobjSheet.Cells(X + 1, 10).Value = oBkRef.Rotation ExcelobjSheet.Cells(X + 1, 11).Value = oBkRef.Layer ExcelobjSheet.Cells(X + 1, 12).Value = oBkRef.XScaleFactor ExcelobjSheet.Cells(X + 1, 13).Value = oBkRef.YScaleFactor ExcelobjSheet.Cells(X + 1, 14).Value = oBkRef.ZScaleFactor 'Debug.Print oDynProp.PropertyName, oDynProp.Value(J) 'je n'obtiens pas la même chose dans le debug.print et excel, je pense avoir commis une erreur car 'normalement, il ne devrait pas écrire dans excel pour ce cas de figure, je me trompe ? 'cependant, j'obtiens sur excel la liste des paramètres personnalisés (ce qui apparait dans la palettes 'propriétés sous "Personnalisé", mais je ne sais pas comment ça entre dans excel ? Next J Else 's'il n'y a qu'une propriété dynamique 'remplir les intitulés des colonnes supplémentaires ExcelobjSheet.Cells(X + 1, 1).Value = "Oui" ExcelobjSheet.Cells(X + 1, 2).Value = oBkRef.EffectiveName ExcelobjSheet.Cells(X + 1, 3).Value = oBkRef.Name ExcelobjSheet.Cells(X + 1, 4).Value = oBkRef.Handle ExcelobjSheet.Cells(X + 1, 5).Value = oBkRef.OwnerID ExcelobjSheet.Cells(X + 1, 6).Value = oBkRef.ObjectID PointXYZ = oBkRef.InsertionPoint ExcelobjSheet.Cells(X + 1, 7).Value = PointXYZ(0) ExcelobjSheet.Cells(X + 1, 8).Value = PointXYZ(1) ExcelobjSheet.Cells(X + 1, 9).Value = PointXYZ(2) ExcelobjSheet.Cells(X + 1, 10).Value = oBkRef.Rotation ExcelobjSheet.Cells(X + 1, 11).Value = oBkRef.Layer ExcelobjSheet.Cells(X + 1, 12).Value = oBkRef.XScaleFactor ExcelobjSheet.Cells(X + 1, 13).Value = oBkRef.YScaleFactor ExcelobjSheet.Cells(X + 1, 14).Value = oBkRef.ZScaleFactor For U = 7 To 256 Nomcolonne = ExcelobjSheet.Cells(1, U) If Nomcolonne = oDynProp.PropertyName Or Nomcolonne = "" Then ExcelobjSheet.Cells(1, U).Value = oDynProp.PropertyName ExcelobjSheet.Cells(X + 1, U).Value = oDynProp.Value Exit For Else End If Next U End If Next p Else ExcelobjSheet.Cells(X + 1, 1).Value = "Non" ExcelobjSheet.Cells(X + 1, 2).Value = oBkRef.EffectiveName ExcelobjSheet.Cells(X + 1, 3).Value = oBkRef.Name ExcelobjSheet.Cells(X + 1, 4).Value = oBkRef.Handle ExcelobjSheet.Cells(X + 1, 5).Value = oBkRef.OwnerID ExcelobjSheet.Cells(X + 1, 6).Value = oBkRef.ObjectID PointXYZ = oBkRef.InsertionPoint ExcelobjSheet.Cells(X + 1, 7).Value = PointXYZ(0) ExcelobjSheet.Cells(X + 1, 8).Value = PointXYZ(1) ExcelobjSheet.Cells(X + 1, 9).Value = PointXYZ(2) ExcelobjSheet.Cells(X + 1, 10).Value = oBkRef.Rotation ExcelobjSheet.Cells(X + 1, 11).Value = oBkRef.Layer ExcelobjSheet.Cells(X + 1, 12).Value = oBkRef.XScaleFactor ExcelobjSheet.Cells(X + 1, 13).Value = oBkRef.YScaleFactor ExcelobjSheet.Cells(X + 1, 14).Value = oBkRef.ZScaleFactor End If If oBkRef.HasAttributes Then Dim varAttributes As Variant varAttributes = oBkRef.GetAttributes Dim strAttributes As String strAttributes = "" Dim n As Integer For n = LBound(varAttributes) To UBound(varAttributes) strAttributes = strAttributes & " Tag: " & varAttributes(n).TagString & _ " Value: " & varAttributes(n).TextString & " " For U = 7 To 255 Nomcolonne = ExcelobjSheet.Cells(1, U) If Nomcolonne = varAttributes(n).TagString Or Nomcolonne = "" Then ExcelobjSheet.Cells(1, U) = varAttributes(n).TagString ExcelobjSheet.Cells(X + 1, U) = varAttributes(n).TextString 'Debug.Print varAttributes(n).TagString Exit For Else End If Next U Next n Dim varAttributesC As Variant varAttributesC = oBkRef.GetConstantAttributes Dim strAttributesC As String For n = LBound(varAttributesC) To UBound(varAttributesC) strAttributesC = strAttributesC & " Tag: " & varAttributesC(n).TagString & _ " Value: " & varAttributesC(n).TextString & " " For U = 7 To 255 Nomcolonne = ExcelobjSheet.Cells(1, U) Dim strattributC As String strattributC = varAttributesC(n).TagString & "(*)" If Nomcolonne = strattributC Or Nomcolonne = "" Then ExcelobjSheet.Cells(1, U).Value = varAttributesC(n).TagString & "(*)" ExcelobjSheet.Cells(X + 1, U).Value = varAttributesC(n).TextString Exit For Else End If Next U Next n Else End If End If Next Ent Excelobj.ScreenUpdating = True Select Case X Case 0 ThisDrawing.Utility.Prompt "Le fichier ne contient pas de blocs" Case 1 ThisDrawing.Utility.Prompt X & " bloc a été trouvé." Case Else ThisDrawing.Utility.Prompt X & " blocs ont été trouvés." End Select Excelobj.SheetsInNewWorkbook = sngNbFeuille If TL_choix.CheckBox1 = True Then Set ExcelobjSheet = Nothing Excelobj.ActiveWorkbook.Close True Set ExcelobjWorkbook = Nothing Excelobj.Quit Set Excelobj = Nothing Else 'ne rien faire End If Exit Sub gestionEx: Debug.Print Err.Number, Err.Description Select Case Err.Number Case "1004" 'donné par ligne ThisDrawing.Utility.Prompt ("Le fichiers dans lequel nous essayons d'écrire est dejà ouvert, veuillez fermer Attribute.xls. Si Excel n'est pas ouvert visuelllement, veuillez faire CTL+ALT+SUPPR et arrêter EXCEL.") MsgBox "Le fichiers dans lequel nous essayons d'écrire est dejà ouvert, veuillez fermer Attribute.xls. Si Excel n'est pas ouvert visuelllement, veuillez faire CTL+ALT+SUPPR et arrêter EXCEL." Set ExcelobjSheet = Nothing Excelobj.ActiveWorkbook.Close True Set ExcelobjWorkbook = Nothing Excelobj.Quit Set Excelobj = Nothing End Select Excelobj.ScreenUpdating = True End Sub Function sautfunction() Dim oBkRef2 As IAcadBlockReference2 Set oBkRef2 = Ent Set oBkRef = oBkRef2 End Function Code de la form : Private Sub ComOk_Click() Call ExtractionVersTableur Me.Hide End Sub la forme s'appelle "Tl_choix" et possède un label et un checkbox [Edité le 8/9/2007 par sechanbask][Edité le 8/9/2007 par sechanbask][Edité le 8/9/2007 par sechanbask][Edité le 9/9/2007 par sechanbask][Edité le 10/9/2007 par sechanbask][Edité le 13/9/2007 par sechanbask][Edité le 1/11/2007 par sechanbask] [Edité le 1/11/2007 par sechanbask] -
J'ai un peu de mal à comprendre ce que tu veux faire. Soit clair et parle français s'il te plait.
-
Excel : fusion de bases de données et/ou mise à jour...
sechanbask a répondu à un(e) sujet de sechanbask dans Routines VBA
dans Excel, tu tappe ATL+F11, ça devrait t'ouvrir VBA pour Excel. Tu cliques sur rien d'autre que le menu Insertion module, puis tu colles les lignes de code qui sont sur le forum. Sous excel, il faut que tu créés un un minimum de 5 feuille car la macro ne fonctione qu'entre la feuille 1 et 5: 'attention cette macro ne fonction que si les données sont en feuil1 (la première créée) et en feuil5 (la 5ième créée). quand tu as tes données sur tes feuilles, tu enregistres, puis tu tappes ALT+F8 , tu sélectionnes "récapdep_listing", tu fais "exécuter" et tu attends quelques secondes en fonction de ton PC. bonne journée -
voilà ma macro pour la fusion de la base de données : http://www.cadxp.com/sujetXForum-16420.htm si ça peut aider...
