Aller au contenu

rom1_am

Membres
  • Compteur de contenus

    101
  • Inscription

  • Dernière visite

  • Jours gagnés

    1

Tout ce qui a été posté par rom1_am

  1. rom1_am

    Impression automatique

    Bonjour, Il n'est pas nécessaire d'activer les présentations si tu définis la liste des presentations à imprimer et que tu utilises ensuite "SetLayoutsToPlot". Il suffit d'adapter à ton besoin la fonction donnée dans l'aide: Sub Example_SetLayoutsToPlot() ' This example plots the layouts of a drawing. Dim oPlot As AcadPlot Dim AddedLayouts() As String Dim LayoutList As Variant Dim oLayout As AcadLayout Dim ArraySize As Integer, BatchCount As Integer For Each oLayout In ThisDrawing.Layouts ArraySize = ArraySize + 1 ReDim Preserve AddedLayouts(1 To ArraySize) AddedLayouts(ArraySize) = oLayout.Name Next LayoutList = AddedLayouts Set oPlot = ThisDrawing.Plot oPlot.SetLayoutsToPlot LayoutList oPlot.PlotToDevice "dwf6 eplot.pc3" End Sub
  2. Il me semble qu'avec cette instruction, l'impression se lance automatiquement. ThisDrawing.Plot.PlotToDevice "DWG To PDF.pc3"
  3. Bonjour, Est-ce que tu as essayé avec : ThisDrawing.ActiveLayout.ConfigName = "...."
  4. Bonjour, Il doit y avoir ce qu'il faut ici : http://www.cadxp.com/sujetXForum-16438.htm
  5. rom1_am

    liste des présentation

    Bonjour, pour gérer l'ordre des présentations, tu peux utiliser la propriété "Layout.Taborder".
  6. Bonjour, Pour faire suite à ce post (http:// http://www.cadxp.com//modules.php?op=modload&name=XForum&file=viewthread&fid=67&tid=20274 ), auriez-vous des avis sur les logiciels de mise en tôle suivants afin de m'aider dans le choix d'un logiciel de ce type : - Opticoupe (société Boole&Partners) - Act/Square (de la société Alma) - Quattro (de la société Lantek) - Logitole (de la société Profirst) Notre besoin est de trouver un logiciel d'imbrication de pièces rectangulaires/optimisation pour découpe de tôles à la cisaille. Merci pour vos retours d'expériences. Je suis également preneur si vous connaissez d'autres logiciels adaptés à ce besoin :cool: . Merci
  7. rom1_am

    sommet mline

    Bonjour, Je ne crois pas qu'on peut y accéder directement. Si c'est comme pour une polyligne, je prend la taille de la liste retournée par la fonction .coordinates divisée par 2 : NbSommet=ubound(objet.coordinates)/2 (A ajuster si l'objet est fermé ou ouvert)
  8. Bonjour, Je poursuis ce sujet concernant les palettes d'outils: http:// http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=22600#pid96679 J'aimerais faire une palette contenant des blocs mais en indiquant dans "fichier source" seulement le nom du bloc sans avoir le chemin de fichier complet afin de pouvoir gérer plus facilement l'emplacement de ma bibliothèque de blocs. Je voulais savoir si vous aviez une méthode pratique pour réaliser cela? J'ai pu le faire en modifiant le fichier .xtp avec un éditeur de texte et en supprimant dans le champ le chemin complet et en laissant seulement le nom de bloc.dwg. Si le bloc se trouve dans un répertoire indiqué dans les chemins de support du profil courant, le bloc s'insère correctement. Cette méthode fonctionne mais n'est vraiment pas très pratique à réaliser (quoique assez rapide en faisant un rechercher-remplacer avec un éditeur de texte) donc je voulais savoir si vous aviez une autre solution? Merci
  9. Car dans le code de la fonction coller, j'ai supprimé les lignes de la partie 3 pour simplifier mon exemple car c'est un petit peu hors sujet. Mais pour info: Dans ma fonction, cette partie contient du code permettant de modifier certaines valeurs en xdatas ou en attributs sur différents objets regroupés en fonction d'identifiants ou de repère de pièce. Ainsi, je peux faire un copier-coller d'un mur composé de plusieurs polylignes ayant un identifiant aléatoire en xdatas plus d'autres blocs de pièces qui recouvrent le mur et qui peuvent être composés de plusieurs pièces ayant un repère commun. Ainsi, je duplique le mur et ses accessoires mais en générant de nouveaux identifiants et repères car ces identifiants me servent à regrouper les différentes pièces pour créer une nomenclature. En espérant avoir été clair...
  10. Bonjour et merci pour vos réponses. - Je m'y connais assez mal en Lisp car je réalise un programme en vba mais j'ai posté ici car j'ai récupéré une de vos fonctions Lisp (cpvl - Désolé, je ne sais plus qui je dois remercier) et je m'en suis inspiré pour faire ma fonction en vba. - J'ai résolu à peu près mon problème en séparant la fonction Copier et la fonction Coller. Si on reste dans le même onglet, les 2 fonctions s'enchaînent et on peut faire le copier-coller sans interruption. Pour copier-coller entre 2 onglets ou fichiers, la méthode est: -lancer la fonction Copier -sélectionner les objets à copier, puis le point de base -Si on change d'onglet ou de fichier, la fonction s'arrête à cause de l'erreur de la méthode GetPoint et Autocad change d'onglet L'utilisateur lance ensuite la fonction Coller qui récupère la dernière sélection d'objets mémorisés en variables publiques. Ci-dessous mon code si jamais ça vous inspire même s'il s'agit de vba: Dim P_A As Variant Dim objCollection() As Object Dim DOC1 As AcadDocument Sub S_CopierAcroteres() '********************************************************************** 'Description: Copier-Coller d'un ou plusieurs acroteres (equipes ou non) 'Modifications: '********************************************************************** Dim i As Integer Dim L_col_Selection As AcadSelectionSet ' 1 - Selection de blocs '============================================================= On Error Resume Next ThisDrawing.SendCommand "" Set L_col_Selection = F_InitialiserJeuSelection("SELECTION") 'l'utilisateur sélectionne des blocs L_col_Selection.SelectOnScreen If L_col_Selection.Count = 0 Then Exit Sub On Error GoTo 0 'Creation d'une collection d'objets (compatible avec CopyObjects) ReDim objCollection(0 To L_col_Selection.Count - 1) As Object For i = 0 To L_col_Selection.Count - 1 Set objCollection(i) = L_col_Selection.Item(i) Next i ' 2 - Point de base et appel de la fonction qui fait la copie '============================================================= P_A = ThisDrawing.Utility.GetPoint(, "Point de base:") Set DOC1 = ThisDrawing.Application.ActiveDocument Call S_CollerAcroteres End Sub Sub S_CollerAcroteres() '********************************************************************** 'Description: Copie une sélection d'objets à un emplacement spécifié 'Modifications: '********************************************************************** Dim i As Integer, j As Integer Dim L_obj_Entite As AcadEntity Dim P_B As Variant 'point de destination Dim L_var_ObjetsDupliques As Variant 'objets retournes par la copie 'Utilisation des variables publiques pour le point de base A, la collection d'objets copiés et le document d'origine Do 'Boucle tant que n'appuie pas sur Echap ' 1 - Gestion d'erreur '=========================== GetAsyncKeyState (vbKeyEscape) 'reinitialise getasynckeystate On Error Resume Next P_B = ThisDrawing.Utility.GetPoint(P_A, "Point d'insertion: (ou Echap pour terminer)") If Err.Number <> 0 Then 'Appui sur ECHAP : fin de la procedure If GetAsyncKeyState(vbKeyEscape) Then Exit Sub Else 'Autre erreur : par exemple changement d'onglet ou de fichier Exit Sub End If End If On Error GoTo 0 ' 2 - Duplique les objets et les deplace '============================================================================== 'CopyObjects: retourne une collection des objets copies L_var_ObjetsDupliques = DOC1.CopyObjects(objCollection, ThisDrawing.PaperSpace) For i = 0 To UBound(L_var_ObjetsDupliques) Set L_obj_Entite = L_var_ObjetsDupliques(i) L_obj_Entite.Move P_A, P_B Next i ' 3 - Modifier les attributs '============================================================================== For i = 0 To UBound(L_var_ObjetsDupliques) 'Code permettant de modifier certains attributs en fonction des objets selectionnes Next i Loop 'Fin de la boucle End Sub
  11. Bonjour, Merci, je vais jeter un coup d'oeil à ta méthode. Pour éclaircir ce que je souhaite faire: J'ai fait une fonction servant à faire un copier-coller en modifiant certains attributs ou xdatas en fonction des objets sélectionnés. Ainsi, dans la fonction, l'utilisateur doit sélectionner des objets, ensuite, je lui demande le point de base de la sélection puis le point d'insertion des objets copiés. Avec Getpoint, la fonction marche très bien si on reste dans le même onglet. Par contre, cela bug si l'utilisateur veut changer d'onglet ou de fichier entre la sélection du point de base et celui du point d'arrivée. Merci
  12. Bonjour, Comment utiliser la méthode Getpoint afin de demander à l'utilisateur un point de base puis un point d'arrivée si les 2 points ne se trouvent pas dans le même onglet? Soit pour passer d'une présentation à une autre soit d'un fichier à un autre. Merci
  13. rom1_am

    Probleme avec AddText

    Bonjour et merci nazemrap, J'ai résolu le problème en définissant les coordonnées du point d'alignement du texte après avoir inséré le texte. Set objText = ThisDrawing.PaperSpace.AddText("Débit", dPoint, 2) objText.TextAlignmentPoint(0) = dPoint(0) objText.TextAlignmentPoint(1) = dPoint(1) Pourtant selon l'aide, il n'est pas utile de définir ce point si l'alignement est à gauche... Mais bon, maintenant, ça marche, c'est l'essentiel.
  14. Bonjour, Dans une procèdure vba, j'ajoute un texte dans une présentation avec le code suivant : Dim dPoint(2) As Double Dim objText As AcadText dPoint(0) = 5: dPoint(1) = 191.5 Set objText = ThisDrawing.PaperSpace.AddText("Débit", dPoint, 2) Une fois que la procèdure vba, le texte apparait très bien au bon endroit dans la présentation concernée. Par contre, je n'arrive pas à sélectionner cet objet avec la souris??? Le calque de l'objet n'est pourtant pas gelé. Lorsque je ferme et je réouvre le fichier, je peux alors le sélectionner. Je précise que je travaille sous AutoCAD2009 Je ne vois pas d'où vient le problème??? Merci pour votre aide.
  15. rom1_am

    jeu de sélection dupliqué

    Bonjour Sechanbask, Dans ton code, j'utiliserais plutôt : "ThisDrawing.SelectionSets.Item("S1").Clear" à la place de : "ThisDrawing.SelectionSets.Add("S1").Clear" En tout cas, Autocad génére une erreur si tu essaies d'ajouter un jeu de selection dont le nom existe déjà où alors si tu essaies d'en supprimer un qui n'existe pas. Personnellement, j'utilise la fonction suivante pour créer/réinitialiser un jeu de sélection: Function F_InitialiserJeuSelection(Nom As String) As AcadSelectionSet '********************************************************************** 'Description: Efface et recrée un jeu de selection 'Parametres: nom du jeu de selection ' Renvoie un jeu de selection '********************************************************************** Dim i As Integer 'Supprimer le jeu de sélection s'il existe For i = 0 To ThisDrawing.SelectionSets.Count - 1 If ThisDrawing.SelectionSets.Item(i).Name = Nom Then ThisDrawing.SelectionSets.Item(i).Delete Exit For End If Next i 'Créer un nouveau jeu de sélection vide Set F_InitialiserJeuSelection = ThisDrawing.SelectionSets.Add(Nom) End Function Dans la procèdure où je veux utiliser mon jeu de sélection, j'appelle la fonction ainsi : Dim L_set_JeuSelection As AcadSelectionSet 'Créer un nouveau jeu de sélection vide Set L_set_JeuSelection = F_InitialiserJeuSelection("selection_blocs") ...
  16. rom1_am

    jeu de sélection dupliqué

    Bonjour, Pourquoi est-ce que tu supprimes et recrées le jeu de sélection? Si tu utilises seulement Clear pour vider ton jeu de sélection, puis que tu refais une sélection d'objet, cela ne fonctionne pas? (Dsl, Je sais que ça répond pas vraiment à ton question, mais je vois pas ce qui cloche dans ton code...)
  17. Bonjour, En vba, il faut utiliser les fonctions GetXdata et SetXdata. L'aide est assez complète (ce qui mérite d'être souligné pour une fois...) pour ces 2 fonctions.
  18. Bonjour, Dans l'aide, ils précisent cela: "L'événement Click ne se produit pas si la valeur de la propriété Value est Null. " A tester? Value est peut-être vide quand on ajoute le bouton par programmation?
  19. Bonjour, Je souhaite arrêter par programmation la commande autocad en cours, ce qui serait l'équivalent de taper sur le clavier sur la touche echap . J'ai essayé le code suivant mais cela ne fonctionne pas, je ne dois pas avoir la bonne syntaxe. ThisDrawing.SendCommand "^C^C" Merci pour vos réponses[Edité le 13/11/2008 par rom1_am] http:// http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=10717#pid41448 Désolé, la réponse était dans ce post. ThisDrawing.SendCommand "(command)" [Edité le 13/11/2008 par rom1_am]
  20. Bonjour, Le code vba fournit dans le lien ci-dessus vers le forum autodesk fonctionne bien. Il permet de redéfinir les échelles x,y,z de tous les blocs dynamiques du dessin et les poignées apparaissent alors correctement. Je l'ai inséré dans mon programme et je n'ai plus le probleme de disparition des poignees.
  21. http://discussion.autodesk.com/forums/thread.jspa?threadID=694796&tstart=15 Le post dans le forum ci-dessus résout le problème. Lors des rotations, les échelles x,y peuvent devenir non uniformes et il faut les redéfinir à une même valeur.
  22. je viens d'essayer mais elle est bien a un. Je comprend vraiment pas, parce qu'a priori le probleme apparait lorsque je fais une rotation sur les blocs. Merci
  23. La variable gripobjlimit definit l'affichage des poignees en fonction du nombre d'objets selectionnes mais dans mon cas, le probleme est que certains blocs ont les poignées d'étirement et d'autres ne les ont pas, mais cela ne dépend pas du nombre d'objets selectionnes. J'ai fait plusieurs essais et j'ai egalement remarque que lorsque j'insere mon bloc (meme manuellement), les poignées apparaissent correctement puis si je tourne mon bloc avec la fonction rotation, il arrive que les poignees disparaissent... J'ai le probleme uniquement avec les blocs dynamiques que j'ai créés et pas avec les blocs dynamiques tirés des exemples autocad. Est-ce qu'il y a une propriété spécifique à définir pour les paramètres dynamiques ou pour le bloc? Merci pour votre aide.
  24. Bonjour, J'ai un programme vba permettant d'insérer des blocs dynamiques le long d'une polyligne. J'insère 3 blocs différents contenus dans des fichiers séparés. Le bloc consiste en un rectangle avec des poignées d'étirement. Lorsque le programme doit insérer un nombre pas trop important de blocs (entre 0 et 50), je n'ai aucun problème. Lorsque le nombre de blocs devient important (supérieur a 100 environ), certains blocs sont corrects et d'autres n'ont plus les poignées d'étirement. Dans les propriétés du bloc, les propriétés personnalisées n'apparaissent plus. Cela arrive de façon aléatoire sur les différents blocs. Pourtant, lorsque je double clique sur un des blocs qui n'a plus les poignées, l'éditeur de bloc ouvre bien la bonne définition de bloc avec les propriétés dynamiques. Auriez-vous déjà rencontré ce problème, savez-vous s'il y a une limite au nombre de blocs? Merci pour vos réponses.
  25. Merci pour ta réponse mais je viens de faire plusieurs essais en mettant en espion mon jeu de sélection par contre je ne comprend vraiment pas l'ordre dans lequel autocad classe les objets. L'ordre ne correspond pas forcément à l'ordre des handle. Du coup, dans ma fonction, je vérifie le handle de l'objet que j'examine, je le transforme en décimal et je mémorise le handle maximum que je rencontre afin d'être sûr de récupérer les paramètres du dernier objet créé parmi les objets de ce calque. J'arrive à récupérer l'objet que je voulais mais je ne comprend toujours pas l'ordre des objets dans la sélection... [Edité le 9/9/2008 par rom1_am]
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité