mour66 Posté(e) le 17 août 2007 Posté(e) le 17 août 2007 Bonjour, Je travaille sous delphi et je voudrais développer un petit applicatif qui permet de capturer des points à l'écran sous autocad LT pour calculer une transformation d'helmert (calage de scans du cadastre et autres). Par OLE depuis mon applicatif je sais donner l'ordre à Autocad de faire une commande style point ou renseignement ( commande windows SendMessage ). Voici le détailFunction GetAcadWindow: HWnd;var AutoCAD : OleVariant; Caption : String;begin AutoCAD := GetActiveOleObject('AutoCAD LT.Application'); Try Caption := Acad.Caption; except on EOleSysError do begin Result := 0; Exit; end; end; Result := FindWindow(Nil, PChar(Caption));end; function TForm1.EnvoyerCommande(Cmd: String) : boolean;var cds: TCopyDataStruct; wnd, sender : HWND; pData : array [0..255] of char;begin; result := False; wnd := GetAcadWindow; sender := Application.Handle; if wnd <> 0 then begin StrPCopy(pData, Cmd + #13); pData[Length(Cmd)+1] := #0; cds.dwData := 1; cds.cbData := SizeOf(pData); cds.lpData := @pData; Result := SendMessage(wnd, WM_COPYDATA, Sender, LParam(@cds)) <> 0; end;end; If Edit1.Text <> '' then EnvoyerCommande(Edit1.Text); ->par exemple point ou _id J'ai tenté par la commande window getmessage, de récupérer le XY qui apparait sur la ligne de commande mais cela ne marche pas. Je voudrais automatiser tout cela sans avoir à mettre en surbrillance ces données puis faire des copier coller. C'est trop fastidieux. Merci de vos réponses
didier Posté(e) le 17 août 2007 Posté(e) le 17 août 2007 Bonjour, ce n'est pas une réponse que je t'apporte,je ne connais pas Delphi ni AutoCad LT par contre je sais ce qu'est une transformation Helmert,et de ce fait je me demande comment vas tu appliquerla transformation point par point dans LT ? à moins que tu te contentes d'une translation-rotationsans facteur d'échelle. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
mour66 Posté(e) le 17 août 2007 Auteur Posté(e) le 17 août 2007 Bonjour, Je pique les points sur le scan en local. Ces points ont bien sur des coordonnées Lambert ( soit le scan est corroyé soit on a des coordonnées par GPS ou orthophoto de l'IGN)Les résultats de l'Helmert donnent le point d'insertion le coefficient d'échelle et la rotation du fichier dwg contenant le scan toujours en local.Ensuite je fait insertion bloc de ce fichier dwg et Autocad me demande justement les renseignements calculés par l'adaptation.Mon scan est donc géoréférencé. Cordialement
MichelZ Posté(e) le 21 octobre 2007 Posté(e) le 21 octobre 2007 Bonjour,J'utilise également Autocad 2000 LT. Sur le site de Michel Martin (the MM site) on peut télécharger hlmdxf. Je ne pense pas qu'il accepte la capture des points directement à l'écran. La solution pas géniale est donc de faire copier/coller pour chaque point sur la ligne de commande "localiser un point" d'Autocad pour alimenter au format Nxy les fichiers d'appui de l'applicatif hlmdxf. Pour passer du dxf au nxy il y a le convertisseur Dxf2xyz 2.0 que j'utilise et qui qui fait très bien ça (merci winfield!) mais dans ce cas, on allonge la chaine de traitement.Pour la capture directe de points sur Autocad LT je reste donc des plus intéressé par le sujet! ;) cordialement.
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant