Aller au contenu

nazemrap

Membres
  • Compteur de contenus

    204
  • Inscription

  • Dernière visite

Tout ce qui a été posté par nazemrap

  1. nazemrap

    Bloc dynamique et VBA

    Bonsoir. Il n'est effectivement pas possible de créer en VBA un bloc dynamique. Mais dans la mesure où celui-ci est créé, la commande d'insertion en vba me semble adéquate. Je viens d'essayer et mon bloc reste dynamique. Je suis peut-être passé à côté, mais il semble que le problème soit ailleurs. Sauf si un des facteurs a été modifié !!!! nazemrap [Edité le 25/5/2006 par nazemrap]
  2. Bonjour. Voici du code qui te permet de cliquer sur un objet et qui renvoie le nom du groupe auquel cet objet appartient. Cela te permettra peut-être d'avancer... Public Sub grp_or_not_grp() Dim obj As AcadObject Dim groupe As AcadGroup Dim averif As String ThisDrawing.Utility.GetEntity obj, ptbase averif = obj.Handle For Each groupe In ThisDrawing.Groups For Each obj In groupe If obj.Handle = averif Then MsgBox "l' objet appartient au groupe: " & groupe.Name Next Next End Sub nazemrap
  3. nazemrap

    Création de groupe d\'objets

    Bonjour. Si tu as exécuté le code, le groupe est créé avec les objets concernés. Si tu exécutes à nouveau, les objets sont déjà présents dans le groupe. Il faut donc supprimer le groupe avant de recommencer la commande, ou enlever les objets du groupe. nazemrap
  4. Bonjour Voir si la variable pickfirst=1 outils > options > sélection > selection action Un endroit precieux: http://www.rebcad.fr/TOP%20QUIZ%20des%20Gal%E8res%20AutoCAD.pdf nazemrap [Edité le 26/4/2006 par nazemrap]
  5. Bonjour. Si il s'agit bien de changer le type de point depuis VBA, le plus simple me semble d' utiliser la méthode SetVariable. intData correspondant au numéro du point de la boite de dialogue Dim sysVarName As String Dim sysVarData As Variant Dim intData As Integer sysVarName = "PDMODE" intData = 3 sysVarData = intData ThisDrawing.SetVariable sysVarName, sysVarData nazemrap
  6. re Je crois que j'y suis: Le texte sous un solide 3d, puis cache avec l'option des lignes en discontinu. Exploser le texte avec le menu express, exploser 2 fois ensuite. Cache pour vérifier. Pfff. nazemrap
  7. Re Pour la seconde j'ai un tuc tarabiscoté qui passe par wmf mais qui marche à la suite du premier ? nazemrap
  8. bonsoir. Pour la première je crois qu'il faut savoir jouer à cache cache ? pour la seconde je sèche encore... nazemrap
  9. nazemrap

    Fort en Pline et LWpline ? ?

    Bonjour. Je pense que le Lisp est en effet plus performant. Mais je ne suis qu'un bricoleur, et j'aime bien le côté 'bout de ficelle" du VBA. Tu me dis si ça marche !? nazemrap
  10. nazemrap

    Fort en Pline et LWpline ? ?

    Bonsoir. Je ne suis pas très efficace en programation vb. Mon soucis est d'arriver à un résultat. La copie de la polyligne se justifie pour la conserver après avoir décomposer la première, sinon elle n' éxisterait plus. Elle est décomposée pour récupérer le segment souhaité. Le segment est identifié par la sélection effectuée qui insère un point. Attention le mode d'accrochage "proche" ou autre est utilisé pour la sélection, cela garantit que le point est sur le segment La méthode delete efface les segments. la valeur de l'angle est renvoyée en degré. Je joins le fichier exemple. 'renvoi l'angle d'un segment de polyligne Public Sub truc() Dim objetselection As AcadEntity Dim polyligne, copiepolyligne As AcadLWPolyline Dim pointdeselection As Variant Dim coordodeselection(0 To 2) As Double Dim explosepoly As Variant Dim point As AcadPoint Dim intpoints As Variant Dim ligne As AcadLine 'NB l'accrochage "proche" doit être utilisé pendant la sélection 'Récupère la polyligne ThisDrawing.Utility.GetEntity objetselection, pointdeselection, "Sélectionnez la polyligne !" Set polyligne = objetselection 'Récupère les coordonnées du point de sélection coordodeselection(0) = pointdeselection(0): coordodeselection(1) = pointdeselection(1) 'Insère un point Set point = ThisDrawing.ModelSpace.AddPoint(pointdeselection) 'Decompose la polyligne explosepoly = polyligne.Explode 'Boucle sur les objets résultants Dim I As Integer For I = 0 To UBound(explosepoly) If explosepoly(I).ObjectName = "AcDbLine" Then Set ligne = explosepoly(I) 'Teste l'intersection avec le point intpoints = ligne.IntersectWith(point, acExtendNone) If VarType(intpoints) <> vbEmpty Then If UBound(intpoints) = 2 Then 'renvoi de la valeur de l'angle en degré MsgBox ligne.Angle * (180 / 3.141589) End If End If End If Next ligne.Delete point.Delete End Sub
  11. nazemrap

    Fort en Pline et LWpline ? ?

    Bonsoir. Sélection de la polylige en identifiant le point de sélection. Copier la polyligne si besoin. Décomposer la polyligne. Renvoyer la valeur de l'angle du segment correspondant au point de sélection. Le tout en visual. :) nazemrap [Edité le 21/3/2006 par nazemrap]
  12. Bonsoir. Super tableau, vraiment bien !!! C'est vrai qu'il faudrait pouvoir y accéder avant chaque question ! J'étais un peu passé à côté. nazemrap
  13. Bonjour. Pareil, impossible jusqu'à maintenant de me connecter. nazemrap
  14. nazemrap

    D\'une polyline a une région...

    Hello. y a pas de quoi. Tu sais qu'il y a plein d'exemples dans vba autocad. Penses à utiliser l'explorateur d'objets ça aide bien. Bonne continuation nazemrap
  15. nazemrap

    D\'une polyline a une région...

    Bonjour. Sendcommand reviendrait à travailler sur la ligne de commande en sélectionnant les régions. Voici un essai avec le même programme depuis une sélection de 2 polylignes, qui effectue une soustraction. A adapter aux circonstances... Public Sub version3() Dim poly As AcadLWPolyline Dim poly_ef As AcadLWPolyline Dim region As Variant Dim region_element(1) As AcadEntity Dim selec As AcadSelectionSet Dim sel_ctrl As AcadSelectionSet Dim n As Integer 'création de la sélection des polylignes On Error GoTo ici Set selec = ThisDrawing.SelectionSets.Add("truc") selec.SelectOnScreen 'appliquer éventuellement un filtre 'Boucle sur la selection For Each poly In selec 'Ouvrir la polyligne attention si option clore a été utilisée. poly.Closed = False 'Affecter la polyligne Set region_element(n) = poly n = n + 1 Next 'création de la région region = ThisDrawing.ModelSpace.AddRegion(region_element) 'affectation Dim reg1 As AcadRegion Dim reg2 As AcadRegion Set reg1 = region(0) Set reg2 = region(1) 'soustraction reg1.Boolean acSubtraction, reg2 'efface For n = 0 To 1 region_element(n).Delete Next ici: ThisDrawing.SelectionSets("truc").Delete End Sub nazemrap
  16. nazemrap

    D\'une polyline a une région...

    Bonjour. La polyligne fermée empêche de reconnaitre une liste d'entités qui pourraient constituer la région. Voici donc un exemple qui décompose la polyligne pour la reconstituer en région. Public Sub poly_en_region() Dim region As Variant Dim poly As AcadLWPolyline Dim poly_explosee As Variant Dim region_element() As AcadEntity Dim tour As Integer Dim n As Integer 'sélection de la polyligne ThisDrawing.Utility.GetEntity poly, pntbase, "sélectionnez la polyligne" 'Exploser la polyligne poly_explosee = poly.Explode 'recupération du nombre d'objets qui composent la polyligne n = UBound(poly_explosee) 'Dimensionnement de la variable qui reçoit la liste des éléments ReDim region_element(n) As AcadEntity 'Affectation des éléments For tour = 0 To n Set region_element(tour) = poly_explosee(tour) Next 'création de la région region = ThisDrawing.ModelSpace.AddRegion(region_element) 'effacement pour ne conserver que la région For tour = 0 To n poly_explosee(tour).Delete Next poly.Delete End Sub Je pense qu'il y a mieux à faire, mais si cela peut te donner une piste... Je ne comprend pas trop l'objet de la seconde question. Amicalement nazemrap Je viens de tester autre chose, plus court. Public Sub version2() Dim poly As AcadLWPolyline Dim region As Variant Dim region_element(0) As AcadEntity 'sélection de la polyligne ThisDrawing.Utility.GetEntity poly, pntbase, "sélectionnez la polyligne" 'Ouvrir la polyligne attention si option clore a été utilisée. poly.Closed = False 'Affecter la polyligne Set region_element(0) = poly 'création de la région region = ThisDrawing.ModelSpace.AddRegion(region_element) poly.Delete End Sub [Edité le 7/3/2006 par nazemrap]
  17. nazemrap

    urgent probleme de fonction

    Bonjour. Il s'agit peut-être de la variable" PICKFIRST" qui doit être à 1. Cela revient à cocher dans le menu déroulant "outils" > "options" > onglet "séléction" > la case "sélection nom/verbe". Amicalement. nazemrap
  18. nazemrap

    Form où je veux

    Bonjour. Si c'est en haut à gauche, l'aide donne ceci: "StartUpPosition, propriété Renvoie ou définit une valeur indiquant la position d'un objet UserForm lors de sa première apparition. La propriété StartUpPosition peut prendre l'une des quatre valeurs suivantes : Valeur Paramètre Description Manual 0 Aucune valeur initiale n'est indiquée. CenterOwner 1 Centre l'objet UserForm au sein de l'élément auquel il appartient. CenterScreen 2 Centre l'objet par rapport à l'écran. WindowsDefault 3 Place l'objet dans l'angle supérieur gauche de l'écran. Remarques Vous pouvez définir la propriété StartUpPosition par programmation ou depuis la fenêtre Propriétés" nazemrap [Edité le 25/2/2006 par nazemrap]
  19. nazemrap

    impression 3D

    Bonsoir. Juste un truc, c'est du 3 D. Est-ce qu'il n'y a a pas des calques désactivés avec des objets 3d dessus ? Cache tient compte des objets sur calque désactivés. nazemrap
  20. Bonjour. j'ai trouvé sur le site Velux 0.9 mini pour l'allège http://www.velux.fr/veluxcommon/resources/cache/dc5b957c-7ffc-4a88-9f07-1e3bdeab948c_legislation%20VELUX.pdf nazemrap
  21. nazemrap

    coordinates

    Bonjour. Il me semble qu'à ce stade le résultat est une variable "variant". Il faut encore l'affecter à une variable polyligne, après l'avoir déclarée. dim objetpolyligne as AcadLWPolyline set objetpolyligne=polyline_décalée(0) nazemrap
  22. nazemrap

    Modélisation terrain...

    Bonsoir . Je me suis fait une macro vba qui transforme les 3dface sen solides et donc une surfgau. nazemrap
  23. nazemrap

    UserForm

    Bonsoir. Peu-être par "parcourir " vers c:\windows\system32\FM20.dll . C'est ce que je trouve comme indication. nazemrap
  24. Bonjour. J'ai eu besoin de cela: copier un ou des objets plusieurs fois à une distance donnée, suivant l'axe des X (éventuellement orienté), sans gérer les colonnes, sur une ligne donc. Si ça peut servir .... Si j'ai fait des bétises, je veux bien qu'on me le dise. Dim cppt() As AcadEntity Dim point(0 To 2) As Double Dim distance As Double Dim plus As Double Dim nombre As Double Dim pnt As Variant Dim selection_objets As AcadSelectionSet Dim obj As AcadEntity Dim selec As AcadSelectionSet Public Sub copie_fois_distance() distance = 0 For Each selec In ThisDrawing.SelectionSets If selec.Name = "selecobj" Then selec.Delete: Exit For Next Set selection_objets = ThisDrawing.SelectionSets.Add("selecobj") selection_objets.SelectOnScreen pnt = ThisDrawing.Utility.GetPoint(, "Quel est le point de base? ") point(0) = pnt(0): point(1) = pnt(1): point(2) = pnt(2) nombre = InputBox("combien d'objets ?") plus = InputBox("Quelle distance ?") nombre = nombre + 1 ReDim cppt(nombre) For Each obj In selection_objets For tour = 1 To nombre point(0) = pnt(0): point(1) = pnt(1): point(2) = pnt(2) Set cppt(tour) = obj.Copy point(0) = point(0) + distance ' Transcrit les points en coordonnées générales Dim pointUCS1 As Variant Dim pointUCS2 As Variant pointUCS1 = ThisDrawing.Utility.TranslateCoordinates(pnt, acUCS, acWorld, False) pointUCS2 = ThisDrawing.Utility.TranslateCoordinates(point, acUCS, acWorld, False) cppt(tour).Move pointUCS1, pointUCS2 distance = distance + plus Next distance = 0 Next ThisDrawing.SelectionSets("selecobj").Delete End Sub
  25. nazemrap

    Objets 3D

    Bonsoir. Est-ce que ce ne serait pas surftab1 et surftab2 qui permettent de densifier le maillage dans la commande surfgau ? nazemrap
×
×
  • 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é