Chuyển đến nội dung
Diễn đàn CADViet
tuyphong_frv

[Yêu cầu] lisp Phun tọa độ các điểm từ file txt vào CAD

Các bài được khuyến nghị

Mình cũng mới ra trường, mình có một file txt tọa độ và độ cao của các điểm. MÌnh cần phun các điểm này lên cad, mình đang chạy Cad 2004, mong các bạn giúp mình với. Mình xin cảm ơn các bạn nhiều

Cấu trúc file dữ liệu txt của mình như sau : STT[dấu tab]X[dấu tab]Y[dấu tab]H

Đây là file dữ liệu text của mình

1	2329601.111	354348.8217	4.05
2	2329680.452	354348.2847	4.8
3	2329695.731	354348.2665	4.59
4	2329760.395	354350.4096	3.83
5	2329734.627	354350.1736	4.06
6	2330033.924	354349.2966	4.02
7	2329853.42	354349.7547	2.51
8	2329954.23	354348.8552	2.96
9	2330024.335	354351.0173	4.36
10	2329141.601	353367.2477	0.87
11	2330083.283	354226.1244	4.41
12	2330096.782	354188.1586	4.56
13	2330084.739	354223.5669	4.41
14	2330072.18	354255.2336	4.24
15	2330082.446	354246.8349	4.28
16	2330086.674	354234.9562	4.31
17	2330090.746	354233.5468	4.34
18	2330116.096	354243.8815	4.56
19	2330118.593	354238.1892	4.6
20	2330101.13	354230.8936	4.38
21	2330091.073	354224.7862	4.53
22	2330091.201	354221.8695	4.55
23	2330099.308	354215.9192	4.74
24	2330071.157	354221.5968	4.64
25	2330095.871	354223.633	4.76
26	2330100.713	354225.8228	4.74
27	2330096.417	354228.2863	4.4
28	2330076.872	354207.8337	4.33
29	2330098.445	354236.9191	4.18
30	2330089.139	354245.2211	4.54
31	2330093.554	354234.947	4.43
32	2330093.809	354234.1311	4.3
33	2330077.296	354206.8475	4.36
34	2330077.296	354206.8359	4.36
35	2330080.467	354207.1728	4.34
36	2330077.579	354223.6025	4.32
37	2328911.223	353810.2686	1.55
38	2328930.38	353819.8861	1.35
39	2328932.433	353812.9436	1.94
40	2328924.433	353805.1256	1.6
41	2328947.281	353825.2526	0.83
42	2328949.977	353816.2742	1.76
43	2328906.788	353794.8497	2.29
44	2328976.065	353841.1843	0.85
45	2328979.015	353829.1792	1.93
46	2328880.018	353796.0264	0.95
47	2328884.037	353784.6955	2.26
48	2329026.355	353856.6625	1.55
49	2329027.518	353848.5523	1.71
50	2328858.222	353787.9463	0.95
51	2328862.666	353775.4874	1.88
52	2329054.445	353866.6599	1.27
53	2329053.742	353858.7875	1.73
54	2328839.054	353780.611	1.26
55	2328843.557	353768.0034	1.91
56	2329078.308	353869.6154	2.39
57	2329085.9	                 353867.6712	3.99
58	2328821.916	353769.5474	1.71
59	2328825.473	353760.1213	1.95
60	2329026.61	353860.7997	1.44
61	2329003.847	353875.4712	1.46
62	2329011.732	353897.4581	0.79
63	2329021.917	353911.9714	1.73
64	2329028.05	353914.3383	3.28
65	2329044.328	353901.1668	3.16
66	2329040.012	353897.6879	2.55
67	2329034.921	353863.9433	1.39
68	2329039.723	353881.0748	1.45
69	2329044.894	353889.0434	1.77
70	2329011.37	353425.3278	4.61
71	2329064.694	353867.1626	1.64
72	2329069.979	353873.7371	1.81
73	2329061.087	353463.8208	3.11
74	2329329.408	354070.541	2.66
75	2329080.108	353860.5343	4.69
76	2328794.414	354261.704	6.67
77	2329329.419	354070.4917	2.7
78	2329189.908	353430.8551	0.9
79	2329601.943	353646.8228	1.8
80	2329581.827	353628.4327	1.77
81	2329588.321	353590.2256	1.85
82	2329552.453	353635.0785	1.7
83	2329566.867	353618.4323	1.68
84	2329548.335	353606.4003	1.64
85	2329563.541	353597.9979	1.64
86	2329559.423	353565.6399	1.5
87	2329528.219	353567.7175	1.34
88	2329360.117	353856.4385	3.01
89	2329901.307	353838.1542	2.03
90	2329879.959	353833.0103	2.06
91	2329410.493	354139.359	3.16
92	2329414.134	354181.8021	3.26
93	2329460.394	354210.5262	3.06
94	2329438.549	354182.5595	3.21
95	2329428.269	354155.6503	3.36
96	2329444.118	354137.8585	3.37
97	2329450.543	354157.3651	3.18
98	2329462.536	354182.8739	3.08
99	2329471.821	354156.3236	3.13
100	2329498.932	354159.7108	2.94
101	2329484.285	354175.7011	3.03
102	2329478.605	354199.3376	3.22
103	2329476.064	354222.5253	2.98
104	2329491.459	354232.4484	3.11
105	2329509.754	354224.4423	2.73
106	2329497.199	354210.2139	2.79
107	2329500.637	354180.743	2.89
108	2329515.733	354203.4819	2.89
109	2329519.619	354178.6653	2.83
110	2329559.919	354231.6953	2.76
111	2329571.177	354254.3869	2.86
112	2329577.346	354209.3126	2.83
113	2329540.482	354182.3826	2.79
114	2329524.382	354228.2562	2.68
115	2329533.636	354206.4522	2.67
116	2329543.566	354223.8679	2.69
117	2329553.784	354207.0975	2.68
118	2329626.709	354331.7136	3.51
119	2329631.417	354307.7982	3.58
120	2329600.893	354265.6954	3.42
121	2329656.473	354242.136	3.08
122	2329641.136	354231.0403	3.23
123	2329628.227	354248.2159	3.73
124	2329627.013	354275.7271	3.65
125	2329639.01	354283.0229	3.67
126	2329697.331	354296.742	3.03
127	2329698.904	354271.4127	3.04
128	2329728.226	354318.2756	3.34
129	2329733.608	354337.3948	3.46
130	2329749.658	354324.7107	3.54
131	2329735.412	354298.1964	3.2
132	2329741.424	354314.1186	3.35
133	2329327.247	354208.2119	2.83
134	2329382.94	354215.3401	2.71
135	2329400.162	354250.7598	2.74
136	2329590.31	354326.2031	4.12
137	2329567.523	354298.5968	4.14
138	2329551.795	354288.4233	4.09
139	2329530.579	354281.19	3.99
140	2329508.943	354268.9288	3.89
141	2329491.988	354267.0737	3.97
142	2329472.663	354263.0806	3.85
143	2329464.457	354128.786	3.11
144	2329461.662	354104.0341	3.12
145	2329436.668	354113.7444	3.42
146	2329446.863	354082.3093	3.33
147	2329447.192	354101.0716	3.3
148	2329452.454	354120.1631	3.23
149	2329014.338	353983.0356	1.72
150	2329004.07	354005.1022	1.76
151	2328988.285	354016.6165	1.8
152	2328977.317	354034.1895	1.81
153	2329003.535	354023.2941	1.79
154	2329023.772	354001.9913	1.72
155	2329031.652	353982.1207	1.69
156	2329032.875	353961.4675	1.66
157	2329044.695	353990.4159	1.69
158	2329049.043	353969.7627	1.67
159	2329048.499	353948.2936	1.64
160	2329060.35	353958.853	1.63
161	2329069.861	353973.5229	1.59
162	2329061.981	353991.1177	1.61
163	2329052.575	354004.0478	1.64
164	2329038.11	354011.4198	1.72
165	2329019.846	354026.4674	1.75
166	2328993.661	354039.0803	1.83
167	2329011.432	354040.0549	1.82
168	2328990.496	354057.3544	1.82
169	2329088.88	353976.5068	1.82
170	2329098.556	353970.0502	1.92
171	2329099.094	353969.461	1.92
172	2329109.388	354100.9901	1.96
173	2329115.774	354082.3129	1.97
174	2329091.236	354016.8952	1.87
175	2329118.582	354052.5581	2.01
176	2329097.306	354049.8987	1.94
177	2329079.97	354054.5447	1.86
178	2329088.598	354043.3077	1.87
179	2329073.536	354024.497	1.83
180	2329065.01	354035.6059	1.82
181	2329056.511	354046.945	1.82
182	2329067.337	354109.8725	1.81
183	2329061.774	354086.6043	1.84
184	2329059.196	354065.9122	1.89
185	2329041.657	354070.4651	1.85
186	2329038.549	354086.206	1.84
187	2329035.826	354115.7098	1.76
188	2329054.451	354133.0674	1.77
189	2329048.2	                354110.8097	1.75
190	2329029.83	354103.7988	1.81
191	2329041.392	354140.1436	1.73
192	2329045.719	354159.8214	1.73
193	2329060.005	354163.5647	1.74
194	2329123.259	354116.0352	1.91
195	2329121.565	354102.2377	1.94
196	2329133.097	354091.2322	1.96
197	2329097.002	354076.1075	1.99
198	2329079.472	354089.8692	1.91
199	2329079.575	354068.2903	1.92
200	2329099.401	354063.3615	1.94
201	2329108.934	354073.4725	1.97
202	2329109.467	354132.6348	1.85
203	2329102.084	354112.7204	1.88
204	2329083.817	354111.8766	1.86
205	2329086.662	354131.7224	1.81
206	2329078.821	354145.9014	1.78
207	2329084.443	354161.5853	1.77
208	2329102.146	354146.9556	1.81
209	2329086.538	354224.0938	1.7
210	2329126.434	354242.1297	1.73
211	2329125.352	354227.33	1.71
212	2329127.709	354213.3064	1.84
213	2329106.1	                354221.002	1.72
214	2329101.997	354204.2132	1.81
215	2329109.828	354191.2014	1.79
216	2329095.116	354169.3198	1.76
217	2329109.344	354175.6344	1.74
218	2329116.48	354160.4862	1.82
219	2329159.585	354221.5597	1.76
220	2329137.947	354216.668	1.76
221	2329124.202	354198.1743	1.76
222	2329129.275	354181.278	1.72
223	2329160.525	354208.2795	1.75
224	2329146.39	354197.641	1.75
225	2329151.466	354181.7352	1.7
226	2329169.994	354201.3772	1.74
227	2329167.87	354178.5351	1.73
228	2329136.449	354160.2965	1.89
229	2329149.083	354162.7697	1.8
230	2329144.757	354149.3288	1.87
231	2329125.069	354142.1175	1.88
232	2329150.965	354136.2676	1.88
233	2329133.172	354125.1692	1.9
234	2329169.971	354147.125	1.78
235	2329162.062	354159.5629	1.46
236	2329154.539	354122.9936	1.88
237	2329168.803	354105.9881	1.87
238	2329186.445	354123.9234	1.77
239	2329205.451	354129.2301	1.77
240	2329192.144	354145.4276	1.76
241	2329192.056	354068.6113	1.86
242	2329166.475	354083.4023	1.95
243	2329197.398	354112.6559	1.79
244	2329186.238	354095.3848	1.84
245	2329178.505	354134.0333	1.78
246	2329172.778	354122.4415	1.81
247	2329143.789	354108.3114	1.93
248	2329157.596	354094.9717	1.96
249	2329144.009	354077.1375	1.24
250	2329130.953	354075.7252	1.97
251	2329146.794	354054.4384	1.99
252	2329187.345	353995.6889	1.92
253	2329132.434	353961.3012	1.92
254	2329132.028	353935.1167	1.84
255	2329119.202	353926.778	1.72
256	2329109.045	353960.1	1.84
257	2329109.709	353948.4834	1.68
258	2329109.348	353930.9206	1.72
259	2329101.629	353920.3708	1.67
260	2329083.57	353942.8778	1.6
261	2329088.078	353930.3007	1.65
262	2329075.722	353913.924	1.68
263	2329093.13	354005.5501	1.91
264	2329111.642	354027.8498	1.98
265	2329115.959	354004.2776	1.98
266	2329125.05	353988.8494	2.01
267	2329130.009	354031.9827	2.02
268	2329127.738	354056.8024	1.99
269	2329158.064	354064.8042	1.99
270	2329166.641	354042.8475	1.96
271	2329147.118	354039.4426	1.99
272	2329150.307	354015.8454	2.01
273	2329169.275	354027.0437	1.97
274	2329173.484	354055.9448	1.87
275	2329182.549	354074.7298	1.85
276	2329187.861	354044.5164	1.95
277	2329198.877	354060.5214	1.87
278	2329201.533	354075.7256	1.89
279	2329214.057	354052.622	1.89
280	2329203.212	354027.854	1.94
281	2329226.797	354038.1144	1.92
282	2329237.518	354042.2618	1.98
283	2329222.929	354012.2059	1.85
284	2329229.828	354000.1155	1.74
285	2329236.555	353979.3012	1.92
286	2329238.533	353992.1372	1.76
287	2329249.809	354004.2657	1.72

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Mình cũng mới ra trường, mình có một file txt tọa độ và độ cao của các điểm. MÌnh cần phun các điểm này lên cad, mình đang chạy Cad 2004, mong các bạn giúp mình với. Mình xin cảm ơn các bạn nhiều

Cấu trúc file dữ liệu txt của mình như sau : STT[dấu tab]X[dấu tab]Y[dấu tab]H

Đây là file dữ liệu text của mình

[color="#0000FF"]...........
57	2329085.9	                 353867.6712	3.99
...........
189	2329048.2	                354110.8097	1.75
...........
213	2329106.1	                354221.002	1.72
...........[/color]

Bạn chạy thử LISP đọc file txt có cấu trúc file dữ liệu như yêu cầu : STT[dấu tab]X[dấu tab]Y[dấu tab]H

Chú ý : trong file dữ liệu bạn Post lên, 3 dòng (57,189,213) có cấu trúc khác biệt.

Chiều cao Txt có thể thay đổi tại dòng : (setq h ....)

(defun c:RFT(/ data f h line pt spc ten val);Read File Txt
(vl-load-com)
 (defun Split (Str Char / Lst pos)
   (while (setq pos (vl-string-search Char Str))
     (if (null Lst)
(setq Lst (list (substr Str 1 pos)))
(setq Lst (append Lst (list (read (substr Str 1 pos))))))
     (setq Str (substr Str (+ pos 2)) ))
   (setq Lst (append Lst (list (read Str)))))

 (if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
   (progn
     (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object))))
     (setq h (* (getvar "dimtxt")(getvar "dimscale")))
     (setq f (open (findfile ten) "r"))
     (while (setq Line (read-line f))
(if (vl-string-search "\t" Line)
  (progn
    (setq data (split Line "\t" )
	  val (car data)
	  pt  (cdr data) )
    (if (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt)))
      (vla-addtext spc val (vlax-3d-point pt) h) ))))  ))
 (princ))

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình đã chạy thử file lisp ma bạn viết, nhưng trên command của mình vẫn hiện dòng lỗi này nè

; error: no function definition: VLAX-GET-ACAD-OBJECT

Mình không hiểu nhiều về autolisp lắm, mong bạn giúp mình khắc phục lỗi này với

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bạn chạy thử LISP đọc file txt có cấu trúc file dữ liệu như yêu cầu : STT[dấu tab]X[dấu tab]Y[dấu tab]H

Chú ý : trong file dữ liệu bạn Post lên, 3 dòng (57,189,213) có cấu trúc khác biệt.

Chiều cao Txt có thể thay đổi tại dòng : (setq h ....)

(defun c:RFT(/ data f h line pt spc ten val);Read File Txt
 (defun Split (Str Char / Lst pos)
   (while (setq pos (vl-string-search Char Str))
     (if (null Lst)
(setq Lst (list (substr Str 1 pos)))
(setq Lst (append Lst (list (read (substr Str 1 pos))))))
     (setq Str (substr Str (+ pos 2)) ))
   (setq Lst (append Lst (list (read Str)))))

 (if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
   (progn
     (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object))))
     (setq h (* (getvar "dimtxt")(getvar "dimscale")))
     (setq f (open (findfile ten) "r"))
     (while (setq Line (read-line f))
(if (vl-string-search "\t" Line)
  (progn
    (setq data (split Line "\t" )
	  val (car data)
	  pt  (cdr data) )
    (if (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt)))
      (vla-addtext spc val (vlax-3d-point pt) h) ))))  ))
 (princ))

Nhờ Anh Gia_bach có thể bổ sung lisp trên giúp em, khi bắn ra cad thì tạo ra các lớp :

1. Lớp point có kí hiệu điểm ( là điểm của tọa độ x, y trắc địa )

2. Lớp Số thứ tự

3. Lớp Cao độ

Mong được anh giúp, mong tin anh

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bạn giải thích rõ hơn :

1. Lớp point có kí hiệu điểm ( là điểm của tọa độ x, y trắc địa )

--> tạo layer có tên POINT chứa các đối tuợng point là điểm của tọa độ x, y

 

2. Lớp Số thứ tự

--> tạo layer có tên SoThuTu chứa đối tuợng Text đuơc tạo thành từ Lisp RFT ?

 

3. Lớp Cao độ

--> tạo layer có tên CaoDo : có đối tuợng gì ?

to : tuyphong_frv

Đã update Lisp, bạn lấy lại LISP trên hoặc gõ dòng (vl-load-com) tại dấu nhắc truớc khi gõ lệnh RFT.

Lớp point là chứa đối tượng có kí hiệu điểm point ( Của Cad ) theo tọa độ x,y của bảng tọa độ trên ( cột 2 và 3 )

Lớp Sothutu là thể hiện số thứ tự hay tên điểm ( cột 1 )

Lớp cao độ là xuất text ở cột 4 ( Chú ý đừng để text STT và Caodo chồng lên nhau )

Mong được anh giúp. Cám ơn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Lớp point là chứa đối tượng có kí hiệu điểm point ( Của Cad ) theo tọa độ x,y của bảng tọa độ trên ( cột 2 và 3 )

Lớp Sothutu là thể hiện số thứ tự hay tên điểm ( cột 1 )

Lớp cao độ là xuất text ở cột 4 ( Chú ý đừng để text STT và Caodo chồng lên nhau )

Mong được anh giúp. Cám ơn

Bạn chạy thử :

(defun c:RFT(/ data f h line pt pXY spc str ten val);Read File Txt
 ;|  By : Gia Bach, gia_bach @  www.CadViet.com             |;    
 (vl-load-com)
 (defun Split (Str Char / Lst pos)
   (while (setq pos (vl-string-search Char Str))
     (if (null Lst)
(setq Lst (list (substr Str 1 pos)))
(setq Lst (append Lst (list (read (substr Str 1 pos))))))
     (setq Str (substr Str (+ pos 2)) ))
   (setq Lst (append Lst (list (read Str)))))

 (if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
   (progn
     (or (tblsearch "layer" "Point") (command "-layer" "n" "Point" "") )
     (or (tblsearch "layer" "Sothutu") (command "-layer" "n" "Sothutu" "c" 3 "Sothutu" "") )
     (or (tblsearch "layer" "Caodo") (command "-layer" "n" "Caodo" "c" 4 "Caodo" "") )
     (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object))))
     (setq h 2);(* (getvar "dimtxt")(getvar "dimscale")))
     (setq f (open (findfile ten) "r"))
     (while (setq Line (read-line f))
(if (vl-string-search "\t" Line)
  (progn
    (setq data (split Line "\t" )
	  val (car data)
	  pt  (cdr data))
    (if (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt)))
      (progn
	(setq pXY (list (car pt)(cadr pt)))
	(vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point")
	(vla-put-Layer (setq str (vla-addtext spc val (vlax-3d-point pXY) h)) "Sothutu")
	(vla-put-Alignment str 8)
	(vla-put-TextAlignmentPoint str (vlax-3d-point pXY))
	(vla-put-Layer (vla-addtext spc (caddr pt) (vlax-3d-point pXY) h) "Caodo")	)))))  ))
 (princ))

  • Vote tăng 3

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bạn chạy thử :

(defun c:RFT(/ data f h line pt pXY spc str ten val);Read File Txt
 ;|  By : Gia Bach, gia_bach @  www.CadViet.com             |;    
 (vl-load-com)
 (defun Split (Str Char / Lst pos)
   (while (setq pos (vl-string-search Char Str))
     (if (null Lst)
(setq Lst (list (substr Str 1 pos)))
(setq Lst (append Lst (list (read (substr Str 1 pos))))))
     (setq Str (substr Str (+ pos 2)) ))
   (setq Lst (append Lst (list (read Str)))))

 (if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
   (progn
     (or (tblsearch "layer" "Point") (command "-layer" "n" "Point" "") )
     (or (tblsearch "layer" "Sothutu") (command "-layer" "n" "Sothutu" "c" 3 "Sothutu" "") )
     (or (tblsearch "layer" "Caodo") (command "-layer" "n" "Caodo" "c" 4 "Caodo" "") )
     (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object))))
     (setq h 2);(* (getvar "dimtxt")(getvar "dimscale")))
     (setq f (open (findfile ten) "r"))
     (while (setq Line (read-line f))
(if (vl-string-search "\t" Line)
  (progn
    (setq data (split Line "\t" )
	  val (car data)
	  pt  (cdr data))
    (if (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt)))
      (progn
	(setq pXY (list (car pt)(cadr pt)))
	(vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point")
	(vla-put-Layer (setq str (vla-addtext spc val (vlax-3d-point pXY) h)) "Sothutu")
	(vla-put-Alignment str 8)
	(vla-put-TextAlignmentPoint str (vlax-3d-point pXY))
	(vla-put-Layer (vla-addtext spc (caddr pt) (vlax-3d-point pXY) h) "Caodo")	)))))  ))
 (princ))

Cám ơn Anh Gia_bach, Lisp rất hay.

Nhờ anh chình thêm : người dùng chọ chiều cao chữ vì khi theo tỉ lệ bản đồ cho phù hợp.

Điểm point cách xa text cao độ một chút.

** Và vấn đề này nữa :

1. Khi đo đạc mình không thể đặt điểm đểu khắp trên khu đo vậy cần phải cấy thêm điểm mia vào, chọn vị trí trên mành hỉnh, thì lisp ghi nhận toạ độ X , Y của điểm đó, Yêu cầu nhập vào số thứ tự điểm, cao độ, thì thể hiện ra trên mành hình. ----> Các Điểm thêm bổ sung trên sẻ được ghi nối vào file toạ độ **.txt cũ ở trên.

2. Nội suy cao độ : Nội suy qua 3 text , chọn 3 text cao độ và chọn vị trí cần nội suy thì tính cho ra điểm point và text cao độ, yêu cầu : nhập số thứ tự vào. ----> Các Điểm thêm bổ sung trên sẻ được ghi nối vào file toạ độ **.txt cũ ở trên.

3. Hoặc là sau khi nhập điểm bổ sung hay nội suy ở các điểm. Ta chọn hết các điểm để xuất ra 1 file text hoàn chỉnh sau cùng.

Rất mong được anh giúp.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình đã làm nhưng vẫn không chạy được, load chạy xong nhưng chẳng hiện điểm nào lên cad cả. Với dữ liệu file text mình đưa lên, mình mong muốn trên cad sẽ hiển thị những điểm đó, và hiển thị độ cao cụ thể bên cạnh những điểm đó trên cad. Rất mong các sư huynh giúp mình với. Xin cảm ơn anh Gia Bạch nhiều nghen

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

To : khaosat2009

Rất tiếc, Tui e rằng không đủ thời gian để thực hiện các yêu cầu này.

Nhân đây nhờ các bạn khác giúp khaosat2009 giùm.

 

............

cad sẽ hiển thị những điểm đó, và hiển thị độ cao cụ thể bên cạnh những điểm đó

Bạn chạy thử :
(defun c:RFT(/ data f h line pt spc ten val);Read File Txt
(vl-load-com)
 (defun Split (Str Char / Lst pos)
   (while (setq pos (vl-string-search Char Str))
     (if (null Lst)
(setq Lst (list (substr Str 1 pos)))
(setq Lst (append Lst (list (read (substr Str 1 pos))))))
     (setq Str (substr Str (+ pos 2)) ))
   (setq Lst (append Lst (list (read Str)))))

 (if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
   (progn
     (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object))))
     (setq h (* (getvar "dimtxt")(getvar "dimscale")))
     (setq f (open (findfile ten) "r"))
     (while (setq Line (read-line f))
(if (vl-string-search "\t" Line)
  (progn
    (setq data (split Line "\t" )
	  val (car data)
	  pt  (cdr data) )
    (if (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt)))
      (progn
	(vla-addtext spc val (vlax-3d-point pt) h)
	(vla-addpoint spc (vlax-3d-point pt))) ))))  ))
 (princ))

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
To : khaosat2009

Rất tiếc, Tui e rằng không đủ thời gian để thực hiện các yêu cầu này.

Nhân đây nhờ các bạn khác giúp khaosat2009 giùm.

 

Bạn chạy thử :

(defun c:RFT(/ data f h line pt spc ten val);Read File Txt
(vl-load-com)
 (defun Split (Str Char / Lst pos)
   (while (setq pos (vl-string-search Char Str))
     (if (null Lst)
(setq Lst (list (substr Str 1 pos)))
(setq Lst (append Lst (list (read (substr Str 1 pos))))))
     (setq Str (substr Str (+ pos 2)) ))
   (setq Lst (append Lst (list (read Str)))))

 (if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
   (progn
     (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object))))
     (setq h (* (getvar "dimtxt")(getvar "dimscale")))
     (setq f (open (findfile ten) "r"))
     (while (setq Line (read-line f))
(if (vl-string-search "\t" Line)
  (progn
    (setq data (split Line "\t" )
	  val (car data)
	  pt  (cdr data) )
    (if (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt)))
      (progn
	(vla-addtext spc val (vlax-3d-point pt) h)
	(vla-addpoint spc (vlax-3d-point pt))) ))))  ))
 (princ))

Cám ơn Anh Gia_bach,

Rất mong được sự giúp đỡ chung của các anh chị.

Mong tin

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cám ơn Anh Gia_bach,

Rất mong được sự giúp đỡ chung của các anh chị.

Mong tin

 

Tôi tìm được cái này nghe có vẻ hay lắm, anh em xem thu nhé

 

Bạn dùng lệnh Bedit để sửa Point thành hình tròn cho dễ nối điểm, ặc, nhớ cài VBA cho cad nếu không là nhịn đấy, vì mình đã mất cả tiếng đồng hồ vì khôngbiết lý do

 

chúc bạn vui

 

http://www.abcautocad.it/software_autocad.html

Programma Import Points

"Software Import Points

Insert points automatically from a database or a text file.

Insertion of points from database and rows of text. If you have lists of points (coordinates and attributes) in a text file, a worksheet or a database, you can import them inside your DWG.

This program helps who works in AutoCAD with relief instruments or anyway has lists of remarkable points in a database, in rows of a text file, rows of Excel, Access, DBase (format also used by Shape files of ESRI), or in any other ODBC compliant database. ImportPoints allows you to import points or blocks with attributes in AutoCAD, transferring the coordinates and alphanumeric attributes from the source table to the design, automatically creating layers and blocks, if necessary. Moreover you will be able to assign the scale, the name or the layer to the imported blocks basing them on the values of the source fields of the database."

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
To : khaosat2009

Bạn khảosát2009 thử xem cái này có đúng ý bạn không

Bạn chạy thử :

(defun c:RFT(/ data f h line pt pXY spc str ten val);Read File Txt
(vl-load-com)
(defun Split (Str Char / Lst pos)
(while (setq pos (vl-string-search Char Str))
(if (null Lst)
(setq Lst (list (substr Str 1 pos)))
(setq Lst (append Lst (list (read (substr Str 1 pos))))))
(setq Str (substr Str (+ pos 2)) ))
(setq Lst (append Lst (list (read Str)))))

(if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
(progn
(or (tblsearch "layer" "Point") (command "-layer" "n" "Point" "") )
(or (tblsearch "layer" "Sothutu") (command "-layer" "n" "Sothutu" "c" 3 "Sothutu" "") )
(or (tblsearch "layer" "Caodo") (command "-layer" "n" "Caodo" "c" 4 "Caodo" "") )
(setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object))))
;(setq h 2)
(Setq h (getreal"\nChieu cao chu:"))
(if (= nil h)(setq h 2))
(setq kitu nil)
(initget "X Y")
(setq kitu (getkword "\nChon kieu xuat [X hay Y]:"))
(cond
   ((= kitu "X") (setq kitu 0))
   ((= kitu "Y") (setq kitu 1))    
   )
(if (= nil kitu)(setq kitu 0))
;(* (getvar "dimtxt")(getvar "dimscale")))
(setq f (open (findfile ten) "r"))
(while (setq Line (read-line f))
(if (vl-string-search "\t" Line)
(progn
(setq data (split Line "\t" )
val (car data)
pt (cdr data))
(if (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt)))
(progn
;(setq pXY (list (car pt)(cadr pt)))
(if (= 0 kitu)
(setq pXY (list (car pt)(cadr pt)))
)
(if (= 1 kitu)
(setq pXY (list (cadr pt)(car pt)))
)
(vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point")
;kkkkkkkkkkkkk
(vla-put-Layer (setq str (vla-addtext spc val (vlax-3d-point pXY) h)) "Sothutu")
(vla-put-Alignment str 8)
(vla-put-TextAlignmentPoint str (vlax-3d-point pXY))
(vla-put-Layer (vla-addtext spc (caddr pt) (vlax-3d-point pXY) h) "Caodo") ))))) ))
(princ))

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Làm thế nào chúng ta nhập thêm điểm vào vị trí bất kỳ mà ta chọn --->> chèn điểm point tại vị trí đó và Lisp yêu : cầu nhập STT và cao độ.

Mình cần 1 lisp chọn tất cả các điểm trên mành hình, gồm STT, Tọado X Y, Cao độ ra ---->> *. Txt.

Rất mong được bạn giúp.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Làm thế nào khi bắn các điểm tọa độ ra cad và đưa hẳn nó ra giữa màn hình.

Rất mong được các anh giúp.

Bạn thêm dòng (command "Zoom" "A" "") vào lisp nêu trên

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bạn chạy thử :

(defun c:RFT(/ data f h line pt pXY spc str ten val);Read File Txt
 ;|  By : Gia Bach, gia_bach @  www.CadViet.com             |;    
 (vl-load-com)
 (defun Split (Str Char / Lst pos)
   (while (setq pos (vl-string-search Char Str))
     (if (null Lst)
(setq Lst (list (substr Str 1 pos)))
(setq Lst (append Lst (list (read (substr Str 1 pos))))))
     (setq Str (substr Str (+ pos 2)) ))
   (setq Lst (append Lst (list (read Str)))))

 (if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
   (progn
     (or (tblsearch "layer" "Point") (command "-layer" "n" "Point" "") )
     (or (tblsearch "layer" "Sothutu") (command "-layer" "n" "Sothutu" "c" 3 "Sothutu" "") )
     (or (tblsearch "layer" "Caodo") (command "-layer" "n" "Caodo" "c" 4 "Caodo" "") )
     (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object))))
     (setq h 2);(* (getvar "dimtxt")(getvar "dimscale")))
     (setq f (open (findfile ten) "r"))
     (while (setq Line (read-line f))
(if (vl-string-search "\t" Line)
  (progn
    (setq data (split Line "\t" )
	  val (car data)
	  pt  (cdr data))
    (if (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt)))
      (progn
	(setq pXY (list (car pt)(cadr pt)))
	(vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point")
	(vla-put-Layer (setq str (vla-addtext spc val (vlax-3d-point pXY) h)) "Sothutu")
	(vla-put-Alignment str 8)
	(vla-put-TextAlignmentPoint str (vlax-3d-point pXY))
	(vla-put-Layer (vla-addtext spc (caddr pt) (vlax-3d-point pXY) h) "Caodo")	)))))  ))
 (princ))

Cảm ơn bạn Gia_Bach rất nhiều nhưng mình thấy file muốn fun điểm lên bản vẽ phải đúng theo một khuôn mẫu nhất định. Mình rất mong rằng file mà bạn fun điểm lên bản vẽ chấp nhận các thông số SST X Y Z Code được phân biệt nhau bởi cả dấu " " (dấu cách) , dấu tab, dấu phẩy....

Nếu bạn lập được 1 hàm tách xâu phân biệt được các thông số đó thì chèn các ký hiệu trắc địa vào bản vẽ là bình thường.

Mình đang vướng mắc vấn đề đó.

Mong các bạn giúp đỡ mình

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cảm ơn bạn Gia_Bach rất nhiều nhưng mình thấy file muốn fun điểm lên bản vẽ phải đúng theo một khuôn mẫu nhất định. Mình rất mong rằng file mà bạn fun điểm lên bản vẽ chấp nhận các thông số SST X Y Z Code được phân biệt nhau bởi cả dấu " " (dấu cách) , dấu tab, dấu phẩy....

Nếu bạn lập được 1 hàm tách xâu phân biệt được các thông số đó thì chèn các ký hiệu trắc địa vào bản vẽ là bình thường.

Mình đang vướng mắc vấn đề đó.

Mong các bạn giúp đỡ mình

 

Nếu bạn đọc dữ liệu trực tiếp từ Excel thì đơn giản hơn nhiều . Trong Excel ghi theo hang theo cột . Mỗi cột là một thông số . Không cần tách xâu .[/size][/font] Có thể chèn ký hiệu trắc địa vào bản vẽ bình thường

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cảm ơn bạn Gia_Bach rất nhiều nhưng mình thấy file muốn fun điểm lên bản vẽ phải đúng theo một khuôn mẫu nhất định. Mình rất mong rằng file mà bạn fun điểm lên bản vẽ chấp nhận các thông số SST X Y Z Code được phân biệt nhau bởi cả dấu " " (dấu cách) , dấu tab, dấu phẩy....

Nếu bạn lập được 1 hàm tách xâu phân biệt được các thông số đó thì chèn các ký hiệu trắc địa vào bản vẽ là bình thường.

Mình đang vướng mắc vấn đề đó.

Mong các bạn giúp đỡ mình

Trong Lisp trên có sử dụng hàm Split (defun Split (Str Char / Lst pos) ... để tách xâu phân biệt được các thông số.

Lisp trên viết cho file có cấu trúc phân biệt giữa các thông số là dấu tab "t"

 

Bạn có thể tìm dấu tab và thay thế bằng dấu cách, dấu phẩy tại các dòng :

(if (vl-string-search "\t" Line)

....

(setq data (split Line "\t" )

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Trong Lisp trên có sử dụng hàm Split (defun Split (Str Char / Lst pos) ... để tách xâu phân biệt được các thông số.

Lisp trên viết cho file có cấu trúc phân biệt giữa các thông số là dấu tab "t"

 

Bạn có thể tìm dấu tab và thay thế bằng dấu cách, dấu phẩy tại các dòng :

(if (vl-string-search "\t" Line)

....

(setq data (split Line "\t" )

Cảm ơn bác Bách rất nhiều.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Trong Lisp trên có sử dụng hàm Split (defun Split (Str Char / Lst pos) ... để tách xâu phân biệt được các thông số.

Lisp trên viết cho file có cấu trúc phân biệt giữa các thông số là dấu tab "t"

 

Bạn có thể tìm dấu tab và thay thế bằng dấu cách, dấu phẩy tại các dòng :

(if (vl-string-search "\t" Line)

....

(setq data (split Line "\t" )

Cháu muốn hỏi bác Bách một chút là cháu thay 1 dấu tab bằng 1 dấu cách rồi nhưng khi các phần tử trên một dòng phân cách nhau không phải là 1 dấu cách hay một dấu tab mà là nhiều dấu tab, dấu cách không giống nhau. Bác có thể giúp cháu lập lisp đọc được tất cả các dạng trên được không ạ? Cháu cảm ơn bác nhiều. Một lần nữa cháu cám ơn bác

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Trong Lisp trên có sử dụng hàm Split (defun Split (Str Char / Lst pos) ... để tách xâu phân biệt được các thông số.

Lisp trên viết cho file có cấu trúc phân biệt giữa các thông số là dấu tab "t"

 

Bạn có thể tìm dấu tab và thay thế bằng dấu cách, dấu phẩy tại các dòng :

(if (vl-string-search "\t" Line)

....

(setq data (split Line "\t" )

Bác Bách à!

Cháu cũng rất ngại khi phải nhờ bác chỉ bảo cháu đôi điều

Bác có thể viết lisp lấy được điểm toạ độ trên bản vẽ mà điểm ở định dạng Attribute (Trên bản vẽ hiển thị Text Số thứ tự, text độ cao và text mã Code)

bác có thể lấy được toạ độ X, Y, Z, STT và mã Code từ các điểm trên bản vẽ và ghi thành 1 file txt được không ạ.

Giả sử điểm đó mà cao độ bị đưa về "0" thì bác có thể lấy cao độ từ text Cao độ hiển thị trên màn hình dạng Attribute được không ạ?

Vấn đề này làm cháu đau đầu từ lâu

Cháu cảm ơn bác nhiều

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cháu muốn hỏi bác Bách một chút là cháu thay 1 dấu tab bằng 1 dấu cách rồi nhưng khi các phần tử trên một dòng phân cách nhau không phải là 1 dấu cách hay một dấu tab mà là nhiều dấu tab, dấu cách không giống nhau. Bác có thể giúp cháu lập lisp đọc được tất cả các dạng trên được không ạ? Cháu cảm ơn bác nhiều. Một lần nữa cháu cám ơn bác

Bạn post file ví dụ có tất cả các dạng trên được không ạ?

Bác Bách à!

Cháu cũng rất ngại khi phải nhờ bác chỉ bảo cháu đôi điều

Bác có thể viết lisp lấy được điểm toạ độ trên bản vẽ mà điểm ở định dạng Attribute (Trên bản vẽ hiển thị Text Số thứ tự, text độ cao và text mã Code)

bác có thể lấy được toạ độ X, Y, Z, STT và mã Code từ các điểm trên bản vẽ và ghi thành 1 file txt được không ạ.

Giả sử điểm đó mà cao độ bị đưa về "0" thì bác có thể lấy cao độ từ text Cao độ hiển thị trên màn hình dạng Attribute được không ạ?

Vấn đề này làm cháu đau đầu từ lâu

Cháu cảm ơn bác nhiều

Nói chung là mọi chuyện đều có thể.

Bạn vui lòng post file CAD có điểm ở định dạng Attribute

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay


×