Aller au contenu

Inserer un block


Messages recommandés

Posté(e)

Bonjour,

 

Comment inserer un block en le gardant accroché au curseur. On peut ainsi voir comment sera inseré le block en prévisualisation.

 

Merci d'avance

Posté(e)

 (command "_-insert" 
(getvar "VIEWCTR") ; ou pause
EchelleXdefini ; ou pause
EchelleXYdefini ; ou pause
Rotation prédéfinie ; ou pause)

 

si tu n'as pas fais de pause

 

 (command "_move"
(entlast)
(getvar "VIEWCTR")
pause)

 

et/ou

 

 (command "_rotate"
(entlast)
(getvar "VIEWCTR")
pause)

......

 

 

ah zut j'ai pas vu que c'était en VB et VBA......

 

 

 

[Edité le 28/4/2005 par Maximilien]

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Invité Patrick
Posté(e)

Un simple Thisdrawing.sendcommand "INSERER" ...etc suffit? Ou j'ai pas bien compris la question?

Posté(e)

Dans VBA pour incérer un block c'est avec la commande suivante:

 

ThisDrawing.ModelSpace.InsertBlock(InsertionPoint, Name, XScale, YScaler, ZScale, Rotation)

 

tu n'auras pas la chance de faire une prévisualisation, mais tu peux spécifier exactement le point d'insertion (InsertionPoint).

 

si tu veux pouvoir le placé toi même la technique de Patrick est bonne mais tu devras choisir ton block manuellement.

 

la meilleur façon c'est le InsertBlock...

 

est-ce que ça aide??? :cool:

Posté(e)

Effectivement smellems,

 

En VBA, on utilise la méthode InsertBlock, mais lorsqu'on clique un point pour créer le InsertPoint et Rotation,

on ne peux pas voir (en prévisualisation) notre block, accroché au curseur.

 

Voici un exemlpe, qu'on veux reproduire en VBA.

Pour cette exemple, il faut créer un block nommé "carre" dans votre dessin.

(defun c:CARRE ()

(setvar "cmdecho" 0)
(command "INSERT" "carre" pause "" "" pause )
(setvar "cmdecho" 1)

)

 

 

Merci à l'avance !

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Invité Patrick
Posté(e)

si tu veux pouvoir le placé toi même la technique de Patrick est bonne mais tu devras choisir ton block manuellement

 

Pourquoi manuellement? Il suffit d'en préciser le nom en donnant une variable à Sendcommand, genre:

 

sendcommand "INSERER " & nomdubloc ...etc

Posté(e)

Bonjour et merci pour toutes vos réponses

 

J'ai essayé la commande

 

Thisdrawing.sendcommand "_-insert" & VbCr & NomduBlock & VbCr

 

effectivement ça marche mais lorsque je clique pour inserer le block, il me demande de rentrer l'échelle, l'angle de rotation. Comment faire pour n'avoir qu'à cliquer le point d'insertion et c'est tout

 

Merci d'avance pour votre aide

Posté(e)

Ho ! Grand Manitou !

 

[surligneur]Pourquoi ça marche pas :[/surligneur]

 

Public Sub INSERT_EXEMPLE()

 

....Dim nomBlock As String

....Dim pointInsert As Variant

....Dim rotInsert As Variant

 

....pointInsert = ThisDrawing.Utility.GetPoint(, "ENTRER LE POINT D'INSERTION")

....rotInsert = ThisDrawing.Utility.GetAngle(pointInsert, "ENTRER L'ANGLE (1 pt.)")

....nomBlock = "carre"

 

....[surligneur]ThisDrawing.SendCommand "_-insert" & vbCr & nomBlock & vbCr & pointInsert & vbCr & "1" & vbCr & "1" & vbCr & rotInsert & vbCr [/surligneur]

 

End Sub

 

 

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Invité Patrick
Posté(e)

Sendcommand marche à 100% quand on fournit à la commande ce qu'elle attend, c'est à dire une commande AutoCAD, et je doute qu'un variant VBA soit quelque chose que la ligne de commande connaisse... Il faut évidemment spécifier le point d'insertion du bloc comme on le ferait à la ligne de commande, en utilisant par exemple le point comme séparateur décimal et non pas la virgule.

 

J'utilise cette méthode sans jamais avoir eu aucun problème, le LISP n'est pas nécessaire. ;)

Posté(e)

Merci Pat, pour ton aide !

 

Si je convertie les points(Variant) en String et Replace les ",' par des "." , ça fonctionne !

Mais je ne vois pas plus (en prévisualisation) mon block lors de la saissi du point d'insertion !

Étant donné que la saissi est faite avant la commande "_-insert" et non pendant comme en LISP ........

 

Chu ! bogué :(

Ho Grand Manitou !

 

[Edité le 1/5/2005 par Pako]

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Invité Patrick
Posté(e)

Je ne comprends pas bien ton problème: soit tu insères un bloc en lui fournissant par programmation son point d'insertion et dans ce cas tu n'as pas besoin de voir ce bloc dynamiquement puisque c'est le programme qui l'insère, soit tu ne fournis pas de point d'insertion et tu vois ton bloc.

Posté(e)

Merci timhothles,

 

Le problème n'est pas l'insertion du block, mais la prévisualisation du block lors de la sassi du point d'insertion (voir mon exemple en LISP, ci-haut).

 

SendCommand ça fonctionne !

 

Mais avec la méthode InsertBlock, peut-on arriver au même résultat ?

 

Merci à vous tous !

 

 

 

 

 

 

 

 

[Edité le 2/5/2005 par Pako]

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

  • 1 an après...
Posté(e)

Bonjour à tous,

 

je suis début en VBA et j'ai fait un petit prog qui m'insert des blocs avec les cmd "GetPoint" et "InsertBlock", jusque là j'ai pas eu de problème. Mais je souhaite que l'utilisateur puisse avoir l'aperçu du bloc accroché au curseur pour le choix du point d'insertion et la rotation uniquement.

 

Donc j'ai remplacer "InserBloc" par la combinaison de "SendCommand" et "-_Inserer", et la c'est la galère car j'ai un truc qui cloche :

 

- Soit ça marche en spécifiant des paramètres supplémentaires, avec cette cmd

 "ThisDrawing.SendCommand "_-insert" & vbCr & "NomBloc"

 

- soit ça marche pas avec cette syntaxe

ThisDrawing.SendCommand "_-insert" & vbCr & "NomBloc" & vbCr & "" & vbCr & 1 & vbCr & 1 & vbCr & "" 

 

Formulé autrement, au cas ou je m'exprime mal, je souhaite que l'utilisateur est la preview du bloc à l'insertion, qu'il clique pour choisir le Point d'insertion, qu'il choisisse la rotation à la souris avec preview, et que les autres paramètres soient une valeur fixe.

alors qu'en ligne de cmd ça marche !

 

quelqu'un peut éclairer ma lanterne, car je patine grave !

 

Merci

[Edité le 27/11/2006 par Apollo]

 

[Edité le 27/11/2006 par Apollo]

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é