Aller au contenu

kisscool73

Membres
  • Compteur de contenus

    15
  • Inscription

  • Dernière visite

Tout ce qui a été posté par kisscool73

  1. Salut, effectivement je ne peut pas modifier la valeur d'un attribut imbriqué sans affecter toutes les références du bloc parent. Il faut bien comprendre la différence entre définition de bloc (BlockTableRecord) et référence de bloc (BlockReference). ça c'est fait!! mais je pensais logiquement que : modifier un attribut au premier niveau d'un bloc(BlockReference) inséré dans l'espace objet (BlockTableRecord) (espace objet n'étant autre qu'un BlockTableRecord ouvert ou en mode edition). on pouvait : modifier l'attribut au premier niveau d'un bloc(BlockReference) inséré dans un bloc (BlockTableRecord)(ouvert ou en mode edition). La seul différence c'est que le parent BlockTableRecord est soit l'espace objet soit un bloc.
  2. Salut, merci d'avoir répondu. je vais essayer d’être un peut plus précis. Déjà dans l'entreprise ou je travail nous utilisons autocad avec des blocs 3D pour faire simple imaginons que je crée un réseau hydraulique, j'ai une bibliothèque de blocs de type Tube(longueurs différentes),raccords(en T,en y,en étoile),des coudes (rayon différents).....tous ça en 3D dans chacun de ces blocs j'ai un bloc "BlockLevel" à chaque jonction. j'ai un programme qui me permet de choisir un élément dans la bibliothèque et par sélection a l’écran de l'inséré à la suite. avec choix de la jonction et rotation autour de l'axe. Ce "BlockLevel" possède des attributs. Maintenant on me demande de renseigner altimétrie à chaque jonction. je dois donc trouver la position des blocs "BlockLevel" imbriqué dans mes références de bloc bibliothèque par rapport au scu général et renseigner la propriété TextString de l'attribut. voila j’espère avoir été un peu plus clair
  3. Bonjour, voila j'aimerais en vb.net trouver la position en Z par rapport au scu espace objet d'un block avec attribut ("BlockLevel"). et modifier l'attribut avec cette valeur. sauf que ce block("BlockLevel") peut être soit dans l'espace objet ,soit imbriqué dans d'autre block("BlockParent") à n'importe quel niveau. et bien sur tous ces blocks peuvent avoir plusieurs référence dans l'espace objet. j'ai essayé quelque chose comme ça: If acBlkTbl.Has("BlockLevel") Then Dim btr As BlockTableRecord = myT.GetObject(acBlkTbl("BlockLevel"), OpenMode.ForRead) blockReferenceIDs = btr.GetBlockReferenceIds(True, True) End If For Each blockReferenceID As ObjectId In blockReferenceIDs Dim br As BlockReference = CType(myT.GetObject(blockReferenceID, OpenMode.ForWrite), BlockReference) Dim arColl As Autodesk.AutoCAD.DatabaseServices.AttributeCollection = br.AttributeCollection Dim ar As AttributeReference = CType(myT.GetObject(arColl(0), OpenMode.ForWrite), AttributeReference) ar.TextString = br.Position.Z OU ar.TextString = "%<\AcObjProp Object(%<\_ObjId " & ar.AcadObject.ObjectId & ">%,2).InsertionPoint \f " & """" & "%lu2%pt4%pr0" & """" & ">%" mais cela ne fonctionne pas quand le block contenant l'attribut se trouve au nieme niveau d'imbriquation ou qu'il y à plusieurs reference dans l'espace objet si quelqu'un peut m'aider je suis preneur merci d'avance
  4. en fait j'ai x blocks diffèrent avec comme nom "nom block1","nomblock2"... avec dans chaque block y blocks ayant comme nom nom du block parent & "support1","support2".. exemple : nom du block1 : "machine 1" -->ligne -->cercle -->block avec comme nom "machine 1 vis 1" -->block avec comme nom "axe" -->block avec comme nom "machine 1 vis 2" -->... nom du block2 : "machine 2"-->ligne -->cercle -->block avec comme nom "machine 1 vis 2" -->block avec comme nom "machine 2 vis 2" -->... nom du blockn : ....... je voudrais sortir mes blocks "machine 1 vis 1","machine 1 vis 2","machine 1 vis 2",... de mes block parent pour les retrouver au même endroit mais en dehors des blocks parent resultat : nom du block1 : "machine 1" -->ligne -->cercle -->block avec comme nom "axe" -->... nom du block2 : "machine 2"-->ligne -->cercle -->... nom du block3 : "machine 1 vis 1" nom du block4 : "machine 1 vis 2" nom du block5 : "machine 2 vis 1" nom du block6 : "machine 2 vis 2" nom du blockn : .......
  5. Salut,tous le monde, Je programme en VBA Je ne connait pas le lisp,mais promis je mis met le plus tot possible je suis souvant bloqué en VBA et les possibilité en lisp me semble plus large?? quelqu'un pourrait me dire comment sortir des entités d'un block sur autocad_ refedit selection du block (editer un block pas de probleme en vba) puis _refset (ajouter/supprimer) _rem (ajouter pas de souci en vba .add ou insertblock ; sortir du block -->>????) selection des entitées à sortir du blocks mais je ne trouve pas l'équivalent en vba le but est de sortir de tous les blocks insérés dans l'espace objet tous les blocks portant le nom "*nom*" et de les retourner dans l'espace objet au même point insertion,echelle,calque merci
  6. Vlisp connait pas mais je veux bien y jeter un coup d'oeil le but est de sortir de tous les blocks insérés dans l'espace objet tous les blocks portant le nom "*nom*" et de les retrouver dans l'espace objet au même point insertion,echelle,calque
  7. Salut,tous le monde, quelqu'un pourrait me dire comment sortir des entités d'un block sur autocad_ refedit selection du block (editer un block pas de probleme en vba) puis _refset (ajouter/supprimer) _rem (ajouter pas de souci en vba .add ou insertblock ; sortir du block -->>????) selection des entitées à sortir du blocks mais je ne trouve pas l'équivalent en vba merci
  8. kisscool73

    zoom objet automatique ?

    non toutes propositions sont les bienvenues
  9. bonjour qq1 pourrait il m'aider j'ai une selection d'objet (dans mon cas des blocks) puis je voudrais faire une boucle sur ma selection zoomer sur chaque objet l'un apres l'autre j'ai essayé ThisDrawing.SendCommand ("_zoom" & vbCr & "_o") mais apres je suis coincé autocad me demande de selectionner un objet comment passer un objet de ma selection a SendCommand OU comment simuler que j'ai selectionner un objet MERCI
  10. bonjour c'est encore moi qui pourrais m'aider je cherche a faire une selection a l'ecran d'un block avec un getsubEntity normal pour recuperer l'entitée selectionner du block et avant de faire quoi que se soit j'aimerais verifier que j'ai bien clické sur le bon block. la je n'arrive pas a selectionner le "parent" ou nom du block auquel il appartient j'ai bien essayé -objet.parent thisdrawing.sencommand "select " & vbCr "p" & vbCr merci d'avance
  11. Voila la solution que j'ai trouvè Sub calques() ThisDrawing.SelectionSets("Selection1").Delete Set Sset = ThisDrawing.SelectionSets.Add("Selection1") Sset.SelectOnScreen Dim gui As AcadEntity Dim guiBlock As AcadBlock Dim guiname As String Dim gui2 As AcadEntity For Each gui In Sset If gui.ObjectName = "AcDbBlockReference" Then guiname = gui.Name Set guiBlock = ThisDrawing.Blocks(guiname) For Each gui2 In guiBlock 'dans cette selection je ne prend que les lignes If gui2.ObjectName = "AcDbLine" Then gui2.Layer = ListBox1.Value 'ou gui2.Layer= ce qu'on veut End If Next End If Next voila j'esper que ca pourras t'aider et si qq1 a une autre methode? bienvenu End Sub
  12. qq1 pourrait-il m'aider,voila lacommande set block=ThisDrawing.ModelSpace.InsertBlock(Point, Name, XScale, YScaler, ZScale, Rotation) ou set block=ThisDrawing.ModelSpace.Block.Add fonctionne tres bien sur autocad 2006 des que je suis passé à autocad 2007 rien ne se passe il n'y a pas de message d'ereeur le meme prog vba sur 2007 se termine normalement mais rien a l'ecran qq1 a t-il un remede?
  13. je ne connait pas le lisp/vlisp mais balance qu'en meme je jetterai un coup d'oeil
  14. merci ca m'aide un peu mais ca marche pas ce que je voudrais c'est lister toutes les entitées d'un bloc en le selectionnant puis changer de calque tel ou tel type d'entitée
  15. salut et bonne année 2007 je debute en vba et deja bloqué je voudrais changer de calque un type d'entité parmis d'autre qui sont dans un block a partir d'une selection a l'ecran -mon probleme c'est que je n'arrive pas a acceder aux objet qui sont dans mon bloc ligne,cercle,... Sub CommandButton1_Click() Dim gui As AcadEntity Dim guiBlock As AcadBlockReference Dim gui2 As AcadEntity On Error Resume Next ThisDrawing.SelectionSets("SelectionConv").Delete Set Sset = ThisDrawing.SelectionSets.Add("SelectionConv") Sset.SelectOnScreen For Each gui In Sset If gui.ObjectName = "AcDbBlockReference" Then For Each gui2 In gui If gui2.ObjectName = "AcDbLine" Then gui2.Layer = "NEW CALQUE" End If Next End If Next End Sub
×
×
  • 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é