Aller au contenu

Echo et Sendcommand


Invité Patrick

Messages recommandés

Invité Patrick
Posté(e)

Y a-t-il moyen de supprimer l'echo des commandes lorsqu'on utilise un SendCommand?

Posté(e)

Patrick,

 

Je n'ai jamais réussi même avec Nomutt. La commande utilise un canal différent. Probablement un AcApDocManager::sendStringToExecute

 

Serge

Posté(e)

bonjour

jsui un nouveau dans autocad et je ne connais que le minimum mais je me suis vite rendu a l'évidence:on peu accelerer le boulot en faisant du code soit en vb ou en c++ avec arx

.quel est le plus avantageux?et comment utiliser les programmes faits?

 

merci de vos reponse

 

et bonne année

 

guigos

 

À qui sait attendre, le temps ouvre les portes.

proverbe chinois

Posté(e)

Serge,

 

Peux-tu êtres plus explicatif ? Est-ce l'appel d'une Class en C++ ?

 

Probablement un AcApDocManager::sendStringToExecute

 

Bonne Année 2005 !

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

Invité Patrick
Posté(e)

Il semble que le nombre minimum de lignes de l'historique soit de 25:

 

preferences.DISPLAY.HistoryLines = 25 (fonctionne)

 

preferences.DISPLAY.HistoryLines = 24 (ne fonctionne pas)

 

J'avais pensé mettre ce nombre à zéro mais ce n'est pas possible.

Posté(e)

Patrick,

 

Alors envoie 25 lignes vides consécutives :)

Mais qu,est-ce que tu veux faire avec ton SendCommand ? Tu peux m'envoyer ton code en privé si tu préfère.

 

Serge

Posté(e)

GUIGOS85,

 

Pour répondre à ta question, l'usage des Express Tools te donneras un bon coup de main. Pour la programmation, le plus simple selon moi est encore AutoLISP, même si pas parfait. De nombreux exemples sont disponibles sur ce site ou sur d'autres.

 

Serge

 

Invité Patrick
Posté(e)
Patrick,

 

Alors envoie 25 lignes vides consécutives :)

Mais qu,est-ce que tu veux faire avec ton SendCommand ? Tu peux m'envoyer ton code en privé si tu préfère.

 

Serge

 

Certes, c'est ce que je m'apprêtais à faire faute de mieux, seulement je perds aussi l'historique produit "manuellement" par l'utilisateur avant l'envoi de mon SendCommand.

 

J'envoie un SendCommand pour utiliser la calculatrice géométrique d'AutoCAD. (CAL). J'ai besoin de calculer l'angle entre trois points (sommet, point1, point2). Je n'ai pas trouvé de meilleure méthode pour cela, mais je suis persuadé qu'il en existe... Serge? ;) ;)

Posté(e)

Patrick,

 

Au lieu de chercher le moyen en VBA, j'ai cherché du coté de comment exécuter le calculateur à aprtir de vba. Je n'y suis pas arrivé parce que geomcal.arx n'expose aucune interface que j'aurais souhaité capturé. Entre 2 programme de même nature, i.e. un programme arx qui aurait voulu se servir du calculateur, c'eut été facile avec un acedInvoke.

 

À la fin de ce message se trouve les début de mes recherche qui n'ont abouties à rien mais qui montre comment charger un fichier arx, si ça peut aider quelqu'un.

 

Donc, ou bien tu utilise le SendCommand, ou bien tu ouvre une nouvelle instance d'AutoCAD et tu y envoie tes SendCommand en cachette (je blague), ou encore tu le fais dans les règle de l'art. La résolution du problème peut être complexes selon que tu es en 2D seulement, en 3D mais que tu projette tes 2 droites sur le plan XY, ou encore que tu projette dans un plan arbitraire. La fonction ang du calculatteur t'offre les 3 choix. Quelle est ta situation ? Sui c'est la dernière, consulte l'exemple Example_AngleFromXAxis.

 

En passant, pour passer des coordonnées au calculateur, on utilise des crochets. Exemple: (cal "ang([0,0],[10,10])"), retourne 45 degrés.

 

Exemple VBA inutile dans le contexte pour charger un arx.

Sub toto()

LoadArxFile "geomcal.arx"

End Sub

 

Function LoadArxFile(Filename As String)

' Charge un fichier arx au besoin. Faire un On error au besoin

Dim appList As Variant

appList = ThisDrawing.Application.ListArx

 

If VarType(appList) <> vbEmpty Then

Dim I As Integer

For I = LBound(appList) To UBound(appList)

If StrComp(appList(I), Filename, vbTextCompare) = 0 Then Exit Function

Next

End If

ThisDrawing.Application.LoadArx (Filename) ' À utiliser si le chemin est connu

End Function

 

Serge

Invité Patrick
Posté(e)

J'ai besoin de calculer l'angle entre trois points seulement en 2D. J'utilise actuellement la syntaxe de la CAL (sommet,point1,point2)

L'idéal est que je puisse faire cela sans la calculatrice.

Posté(e)

Patrick,

 

Ceci devrait faire l'affaire.

 

Public Const PI = 3.14159265358979

Sub Example_AngleFromXAxis()

' This example finds the angle, in radians, between the X axis

' and a line defined by two points.

 

Dim pt1(0 To 2) As Double

Dim pt2(0 To 2) As Double

Dim sommet(0 To 2) As Double

Dim retAngle1 As Double

Dim retAngle2 As Double

Dim message As String

 

pt1(0) = 10: pt1(1) = 0: pt1(2) = 0

pt2(0) = 10: pt2(1) = 10: pt2(2) = 0

sommet(0) = 0: sommet(0) = 2: sommet(0) = 0

 

' Return the angle

retAngle1 = ThisDrawing.Utility.AngleFromXAxis(sommet, pt1)

retAngle2 = ThisDrawing.Utility.AngleFromXAxis(sommet, pt2)

 

' Display the angle found

message = "L'angle les 2 points et le sommet est: " & vbCrLf & _

"En radians: " & retAngle2 - retAngle1 & vbCrLf & _

"En degrés: " & 180# * (retAngle2 - retAngle1) / PI

 

MsgBox message, , "AngleFromXAxis Example"

 

End Sub

 

Serge

 

Posté(e)

Oops,

 

J'ai été chanceux que VBA initialise les variables à 0.

C'eut été ceci:

sommet(0) = 0: sommet(1) = 0: sommet(2) = 0

 

 

Serge

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é