Dalam pelajaran siklus sebelumnya, kami belajar menampilkan teks di blok judul. Hari ini kita akan berbicara tentang cara membuat teks ke dokumen itu sendiri. Kami akan mempertimbangkan contoh paling sederhana, dan menunjukkan trik yang lebih kompleks dalam pelajaran berikut.

Isi seri pelajaran βBekerja dengan API KOMPAS-3Dβ
- Dasar-dasarnya
- Desain gambar
- Koneksi yang benar ke KOMPAS
- Prasasti utama
- Primitif grafis
- Menyimpan dokumen dalam berbagai format
- Mengenal pengaturan
- Metode penulisan yang lebih canggih di blok judul
- Membaca sel teks
- Karakter khusus termasuk string
- Label teks sederhana
Text Anchor Point
Teks dalam KOMPAS selalu ditampilkan relatif ke beberapa titik, yang disebut titik jangkar. Teks dapat diposisikan secara berbeda relatif terhadapnya. Untuk mengetahui lokasi teks relatif terhadap titik jangkar, metode 
ksGetTextAlign dari antarmuka 
ksDocument2D digunakan . Berikut ini adalah prototipe-nya.
long ksGetTextAlign ( long pText  
Sebagai satu-satunya parameter, dibutuhkan pointer integer ke objek 
teks . Metode mengembalikan 
tipe penjilidan , atau 
-1 jika terjadi kesalahan. Jenis penjilidan yang valid ditunjukkan pada tabel di bawah ini.
 Tabel tipe pengikatan yang valid
Tabel tipe pengikatan yang validUntuk mengubah pengikatan teks, gunakan metode 
ksSetTextAlign dari antarmuka 
ksDocument2D . Berikut ini adalah prototipe-nya.
 long ksSetTextAlign ( long pText, //   «» long align //  ); 
Jika berhasil, metode ini mengembalikan 
1 , dan jika terjadi kesalahan, mengembalikan 
nol .
Output teks
Untuk output teks sederhana, gunakan metode 
ksText dari antarmuka 
ksDocument2D . Berikut ini adalah prototipe dari metode ini.
 long ksText ( double x, //   double y, double ang, //   double hStr, //    double ksuStr, //  long bitVector, //  BSTR s //  ); 
Mari kita 
menganalisis parameter metode 
ksText . Kami membahas titik jangkar di bagian sebelumnya.
Parameter 
ang menetapkan sudut dalam derajat antara garis teks dan garis horizontal. Sudut dihitung berlawanan arah jarum jam. Gambar di bawah ini menunjukkan garis yang ditarik pada sudut 
45 Β° .
 String 45 Β°
String 45 Β°Parameter 
hStr menetapkan ukuran karakter string dalam milimeter. Jika nilai parameter ini adalah 
nol , maka ukuran standar digunakan.
Parameter 
ksuStr menentukan peregangan (penyempitan) teks. Gambar di bawah ini menunjukkan beberapa baris dengan nilai parameter 
ksuStr yang 
berbeda .
 Garis berganda dengan nilai regangan berbeda
Garis berganda dengan nilai regangan berbedaDari gambar ini dapat dilihat bahwa "peregangan 0" setara dengan "peregangan 1", yaitu tidak adanya peregangan.
Parameter 
bitVector berisi serangkaian flag yang menentukan gaya karakter. Bendera yang valid tercantum dalam tabel di bawah ini.
 Tabel tanda karakter
Tabel tanda karakterBahkan, ada bendera lain yang valid, tetapi pekerjaan mereka hanya muncul dalam konstruksi string kompleks. Kami akan mempertimbangkan beberapa dari mereka dalam pelajaran berikutnya.
Ingat - string keluaran tidak boleh mengandung karakter 
@ , 
$ , 
& , 
~ , 
^ dan 
# , karena mereka adalah karakter kontrol. Kami akan berbicara tentang bekerja dengan mereka dalam pelajaran berikutnya dari siklus kami.
Jika berhasil, metode 
ksText mengembalikan pointer integer ke teks. Pointer ini dapat diteruskan, misalnya, ke metode 
ksSetTextAlign untuk mengubah posisi teks relatif ke titik jangkar. Jika terjadi kesalahan, metode 
ksText mengembalikan 
nol .
Contoh
Berikut ini adalah contoh program yang menunjukkan keluaran string menggunakan metode 
ksText .
 //  BSTR str = SysAllocString(L""); long itext; itext = Document2D->ksText(100, 100, //  0, //  11, //  0, // 0, //  str); SysFreeString(str); //    Document2D->ksSetTextAlign(itext, txta_Left); Document2D.Unbind(); //   kompas->Visible = true; kompas.Unbind(); 
Untuk kesederhanaan, kode yang bertanggung jawab untuk pembuatan dan pelaksanaan dokumen dihilangkan dalam contoh ini. Sebagai hasil dari program ini, teks 
"String" ditampilkan dalam dokumen.
Ukuran teks
Saat menampilkan teks dalam dokumen, akan berguna untuk mengetahui seberapa banyak ruang yang dibutuhkan. Ketinggian teks diatur oleh parameter 
hStr dari metode 
ksText . Tetapi panjangnya langsung tergantung pada string output.
Untuk menentukannya, gunakan metode 
ksGetTextLengthFromReference dari antarmuka 
ksDocument2D . Metode ini hanya memiliki satu parameter - pointer integer ke teks. Ini mengembalikan panjang teks dalam milimeter.
Metode 
ksGetTextLengthFromReference tidak nyaman karena tidak memungkinkan Anda untuk menentukan panjang baris sebelum di-output ke dokumen. Untuk menentukan panjang string yang belum di-output ke dokumen, Anda perlu menggunakan metode 
ksGetTextLength . Tapi sebelum mempertimbangkannya, mari kita bicara tentang gaya.
Gaya teks
Sistem KOMPAS menentukan beberapa gaya untuk teks yang ditampilkan dalam dokumen. Setiap gaya memiliki bilangan bulat. Gaya yang paling umum digunakan adalah dalam tabel di bawah ini.
 Gaya Teks yang Biasa Digunakan
Gaya Teks yang Biasa DigunakanTidak semua gaya diberikan dalam tabel ini: hanya sebagian saja. Daftar lengkap konstanta yang tersedia dapat ditemukan di halaman 
"Struktur Parameter dan Konstanta \ Konstanta \ Konstanta Teks \ Gaya Teks Sistem" dalam dokumentasi KOMPAS.
Metode KsGetTextLength
Metode 
ksGetTextLength pada antarmuka 
ksDocument2D memungkinkan 
Anda untuk menentukan panjang string sebelum di-output ke dokumen. Di bawah ini adalah prototipe dari metode ini.
 double ksGetTextLength ( BSTR text, // long style //  ); 
Metode mengembalikan panjang string dalam milimeter. Harap dicatat: metode menerima string itu sendiri sebagai parameter, dan bukan penunjuk ke objek "teks". Ini memungkinkan Anda untuk mengevaluasi ukuran garis sebelum di-output ke dokumen.
Contoh
Pertimbangkan contoh menggunakan metode 
ksGetTextLength . Misalkan kita memiliki garis dan kita perlu menempatkannya dalam persegi panjang dengan panjang tertentu (tugas ini jauh lebih mudah untuk diselesaikan dengan bantuan paragraf, tetapi tentang mereka dalam pelajaran berikutnya). Jika garis pas di dalamnya, maka itu ditampilkan secara penuh. Jika tidak, maka itu terputus dan elipsis ditempatkan di ujungnya. Di bawah ini adalah kode sumber program yang memecahkan masalah seperti itu.
 const wchar_t FULLSTR[] = L"  !   !   !"; const wchar_t DOTS[] = L"..."; const long STYLE = 1; double maxSize = 100.0; BSTR str = SysAllocString(FULLSTR); if(Document2D->ksGetTextLength(str, STYLE) > maxSize) { //   BSTR str_dots = SysAllocString(DOTS); double size_dots = Document2D->ksGetTextLength(str_dots, STYLE); SysFreeString(str_dots); //     maxSize -= size_dots; SysReAllocStringLen(&str, str, SysStringLen(str) - 4); // ,     while(Document2D->ksGetTextLength(str, STYLE) > maxSize) SysReAllocStringLen(&str, str, SysStringLen(str) - 1); //    size_t len = SysStringLen(str); SysFreeString(str); //     wchar_t *p = new wchar_t[len + wcslen(DOTS) + 1]; wcsncpy(p, FULLSTR, len); p[len] = L'\0'; wcscat(p, DOTS); str = SysAllocString(p); delete [] p; } //    Document2D->ksText(100, 100, //  0, //  0, //  0, // 0, //  str); //  SysFreeString(str); Document2D.Unbind(); //   kompas->Visible = true; kompas.Unbind(); 
String sumber ditentukan dalam konstanta 
FULLSTR . 
MaxSize variabel menetapkan panjang persegi panjang tempat Anda ingin memasukkan string. Kemudian nilai ini ditentukan, ukuran ellipsis dikurangi darinya, yang disimpan dalam variabel 
size_dots . Jika garis tidak cocok, satu karakter terpotong darinya sampai cocok dengan persegi panjang dengan ukuran yang ditentukan. Ini terjadi dalam 
loop sementara .
Perhatikan titik yang sangat penting: saat mengeluarkan string, semua parameter metode 
ksText (kecuali koordinat titik jangkar) memiliki 
nilai nol . Faktanya adalah bahwa metode 
ksGetTextLength tidak tahu apa-apa tentang parameter ini, sehingga tidak dapat memperhitungkannya saat menghitung panjang string. Jadi, jika output dari string menggunakan nilai bukan nol dari parameter metode 
ksText , maka panjang string yang dihasilkan mungkin berbeda dari yang diperoleh oleh metode 
ksGetTextLength .
KesimpulanDalam pelajaran ini, kami belajar cara menampilkan label teks sederhana menggunakan metode 
ksText . Ini bukan satu-satunya cara untuk menampilkan teks, tetapi mungkin yang termudah. Dalam pelajaran berikutnya, kita akan melihat bagaimana garis majemuk ini dapat di-output menggunakan metode ini. Dan berikut ini, kami akan mempertimbangkan metode output teks yang lebih kompleks.
Untuk dilanjutkan, ikuti berita blog.
 Sergey Norseev, Ph.D., penulis buku "Pengembangan Aplikasi untuk COMPAS di Delphi."